Advertisement
Guest User

Untitled

a guest
Jun 22nd, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 1.73 KB | None | 0 0
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use feature qw(say);
  5.  
  6. my @devices = (
  7.     #'null',
  8.     #'default',
  9.     #'plughw:HDMI,3'
  10.     #'hw:0,3',
  11.     #'hw:2,0',
  12.     'hw:Device,0',
  13.     #'plughw:1,0',
  14. );
  15. my @rates = (
  16.     '44100',
  17.     '48000',
  18. );
  19. my @formats = (
  20.     'S8',
  21.     'U8',
  22.     'S16_LE',
  23.     'S16_BE',
  24.     'U16_LE',
  25.     'U16_BE',
  26.     'S24_LE',
  27.     'S24_BE',
  28.     'U24_LE',
  29.     'U24_BE',
  30.     'S32_LE',
  31.     'S32_BE',
  32.     'U32_LE',
  33.     'U32_BE',
  34.     'FLOAT_LE',
  35.     'FLOAT_BE',
  36.     'FLOAT64_LE',
  37.     'FLOAT64_BE',
  38.     'IEC958_SUBFRAME_LE',
  39.     'IEC958_SUBFRAME_BE',
  40.     'MU_LAW',
  41.     'A_LAW',
  42.     'IMA_ADPCM',
  43.     'MPEG',
  44.     'GSM',
  45.     'SPECIAL',
  46.     'S24_3LE',
  47.     'S24_3BE',
  48.     'U24_3LE',
  49.     'U24_3BE',
  50.     'S20_3LE',
  51.     'S20_3BE',
  52.     'U20_3LE',
  53.     'U20_3BE',
  54.     'S18_3LE',
  55.     'S18_3BE',
  56.     'U18_3LE',
  57.     'U18_3BE',
  58.     'G723_24',
  59.     'G723_24_1B',
  60.     'G723_40',
  61.     'G723_40_1B',
  62.     'DSD_U8',
  63.     'DSD_U16_LE',
  64. );
  65. @formats = (
  66.     'S32_LE',
  67. );
  68. sub test {
  69.     my $device = shift();
  70.     my $rate = shift();
  71.     my $format = shift();
  72.     my $cmd = "aplay";
  73.     $cmd .= " --duration=1";
  74.     $cmd .= " --channels=2";
  75.     $cmd .= " --device=$device";
  76.     $cmd .= " --rate=$rate";
  77.     $cmd .= " --format=$format";
  78.     $cmd .= " --disable-format";
  79.     $cmd .= " --quiet";
  80.     $cmd .= " /dev/zero";
  81.     $cmd .= " 2>&1";
  82.     my $data = `$cmd`;
  83.     return $data
  84. }
  85. foreach my $device (@devices) {
  86.     foreach my $rate (@rates) {
  87.         foreach my $format (@formats) {
  88.             my $lines = test(
  89.                 $device,
  90.                 $rate,
  91.                 $format
  92.             );
  93.             my @lines = split(/\n/, $lines);
  94.             my $result = 'PASS';
  95.             if(@lines > 0) {
  96.                 $result = 'FAIL';
  97.                 print("$result device='$device' rate='$rate' format='$format' $lines[0]\n");
  98.                 foreach my $line (@lines) {
  99.                     print("$line\n");
  100.                 }
  101.             } else {
  102.                 print("$result device='$device' rate='$rate' format='$format'\n");
  103.             }
  104.         }
  105.     }
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement