From 528995589f2911280f40df88a56f4d5bffaa892e Mon Sep 17 00:00:00 2001 From: Luca Barbato Date: Sun, 27 May 2012 19:35:10 -0700 Subject: [PATCH 1/8] avprobe: move formatter functions in the context Avoid possible clashes. --- avprobe.c | 112 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 59 insertions(+), 53 deletions(-) diff --git a/avprobe.c b/avprobe.c index 867d10d1f7..3a0ee28f8d 100644 --- a/avprobe.c +++ b/avprobe.c @@ -93,6 +93,16 @@ typedef struct { typedef struct { ProbeElement *prefix; int level; + void (*print_header)(void); + void (*print_footer)(void); + + void (*print_array_header) (const char *name); + void (*print_array_footer) (const char *name); + void (*print_object_header)(const char *name); + void (*print_object_footer)(const char *name); + + void (*print_integer) (const char *key, int64_t value); + void (*print_string) (const char *key, const char *value); } OutputContext; static AVIOContext *probe_out = NULL; @@ -346,19 +356,6 @@ static void show_format_entry_string(const char *key, const char *value) } } - -void (*print_header)(void) = ini_print_header; -void (*print_footer)(void) = ini_print_footer; - -void (*print_array_header) (const char *name) = ini_print_array_header; -void (*print_array_footer) (const char *name); -void (*print_object_header)(const char *name) = ini_print_object_header; -void (*print_object_footer)(const char *name); - -void (*print_integer) (const char *key, int64_t value) = ini_print_integer; -void (*print_string) (const char *key, const char *value) = ini_print_string; - - static void probe_group_enter(const char *name, int type) { int64_t count = -1; @@ -388,23 +385,23 @@ static void probe_group_leave(void) static void probe_header(void) { - if (print_header) - print_header(); + if (octx.print_header) + octx.print_header(); probe_group_enter("root", OBJECT); } static void probe_footer(void) { - if (print_footer) - print_footer(); + if (octx.print_footer) + octx.print_footer(); probe_group_leave(); } static void probe_array_header(const char *name) { - if (print_array_header) - print_array_header(name); + if (octx.print_array_header) + octx.print_array_header(name); probe_group_enter(name, ARRAY); } @@ -412,14 +409,14 @@ static void probe_array_header(const char *name) static void probe_array_footer(const char *name) { probe_group_leave(); - if (print_array_footer) - print_array_footer(name); + if (octx.print_array_footer) + octx.print_array_footer(name); } static void probe_object_header(const char *name) { - if (print_object_header) - print_object_header(name); + if (octx.print_object_header) + octx.print_object_header(name); probe_group_enter(name, OBJECT); } @@ -427,19 +424,19 @@ static void probe_object_header(const char *name) static void probe_object_footer(const char *name) { probe_group_leave(); - if (print_object_footer) - print_object_footer(name); + if (octx.print_object_footer) + octx.print_object_footer(name); } static void probe_int(const char *key, int64_t value) { - print_integer(key, value); + octx.print_integer(key, value); octx.prefix[octx.level -1].nb_elems++; } static void probe_str(const char *key, const char *value) { - print_string(key, value); + octx.print_string(key, value); octx.prefix[octx.level -1].nb_elems++; } @@ -810,29 +807,29 @@ static int opt_output_format(const char *opt, const char *arg) { if (!strcmp(arg, "json")) { - print_header = json_print_header; - print_footer = json_print_footer; - print_array_header = json_print_array_header; - print_array_footer = json_print_array_footer; - print_object_header = json_print_object_header; - print_object_footer = json_print_object_footer; + octx.print_header = json_print_header; + octx.print_footer = json_print_footer; + octx.print_array_header = json_print_array_header; + octx.print_array_footer = json_print_array_footer; + octx.print_object_header = json_print_object_header; + octx.print_object_footer = json_print_object_footer; - print_integer = json_print_integer; - print_string = json_print_string; + octx.print_integer = json_print_integer; + octx.print_string = json_print_string; } else if (!strcmp(arg, "ini")) { - print_header = ini_print_header; - print_footer = ini_print_footer; - print_array_header = ini_print_array_header; - print_object_header = ini_print_object_header; + octx.print_header = ini_print_header; + octx.print_footer = ini_print_footer; + octx.print_array_header = ini_print_array_header; + octx.print_object_header = ini_print_object_header; - print_integer = ini_print_integer; - print_string = ini_print_string; + octx.print_integer = ini_print_integer; + octx.print_string = ini_print_string; } else if (!strcmp(arg, "old")) { - print_header = NULL; - print_object_header = old_print_object_header; - print_object_footer = old_print_object_footer; + octx.print_header = NULL; + octx.print_object_header = old_print_object_header; + octx.print_object_footer = old_print_object_footer; - print_string = old_print_string; + octx.print_string = old_print_string; } else { av_log(NULL, AV_LOG_ERROR, "Unsupported formatter %s\n", arg); return AVERROR(EINVAL); @@ -844,15 +841,15 @@ static int opt_show_format_entry(const char *opt, const char *arg) { do_show_format = 1; nb_fmt_entries_to_show++; - print_header = NULL; - print_footer = NULL; - print_array_header = NULL; - print_array_footer = NULL; - print_object_header = NULL; - print_object_footer = NULL; + octx.print_header = NULL; + octx.print_footer = NULL; + octx.print_array_header = NULL; + octx.print_array_footer = NULL; + octx.print_object_header = NULL; + octx.print_object_footer = NULL; - print_integer = show_format_entry_integer; - print_string = show_format_entry_string; + octx.print_integer = show_format_entry_integer; + octx.print_string = show_format_entry_string; av_dict_set(&fmt_entries_to_show, arg, "", 0); return 0; } @@ -952,6 +949,15 @@ int main(int argc, char **argv) if (!probe_out) exit(1); + octx.print_header = ini_print_header; + octx.print_footer = ini_print_footer; + + octx.print_array_header = ini_print_array_header; + octx.print_object_header = ini_print_object_header; + + octx.print_integer = ini_print_integer; + octx.print_string = ini_print_string; + probe_header(); ret = probe_file(input_filename); probe_footer(); From 8dfc122719f3e1fa88fa9356a820843e6840df16 Mon Sep 17 00:00:00 2001 From: Justin Ruggles Date: Mon, 23 Apr 2012 14:50:22 -0400 Subject: [PATCH 2/8] lavr: add C functions for mixing 2 to 1 channels with s16p format --- libavresample/audio_mix.c | 50 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/libavresample/audio_mix.c b/libavresample/audio_mix.c index 76f10eaab2..7ab11b0d4d 100644 --- a/libavresample/audio_mix.c +++ b/libavresample/audio_mix.c @@ -115,6 +115,50 @@ static void mix_2_to_1_fltp_flt_c(float **samples, float **matrix, int len, } } +static void mix_2_to_1_s16p_flt_c(int16_t **samples, float **matrix, int len, + int out_ch, int in_ch) +{ + int16_t *src0 = samples[0]; + int16_t *src1 = samples[1]; + int16_t *dst = src0; + float m0 = matrix[0][0]; + float m1 = matrix[0][1]; + + while (len > 4) { + *dst++ = av_clip_int16(lrintf(*src0++ * m0 + *src1++ * m1)); + *dst++ = av_clip_int16(lrintf(*src0++ * m0 + *src1++ * m1)); + *dst++ = av_clip_int16(lrintf(*src0++ * m0 + *src1++ * m1)); + *dst++ = av_clip_int16(lrintf(*src0++ * m0 + *src1++ * m1)); + len -= 4; + } + while (len > 0) { + *dst++ = av_clip_int16(lrintf(*src0++ * m0 + *src1++ * m1)); + len--; + } +} + +static void mix_2_to_1_s16p_q8_c(int16_t **samples, int16_t **matrix, int len, + int out_ch, int in_ch) +{ + int16_t *src0 = samples[0]; + int16_t *src1 = samples[1]; + int16_t *dst = src0; + int16_t m0 = matrix[0][0]; + int16_t m1 = matrix[0][1]; + + while (len > 4) { + *dst++ = (*src0++ * m0 + *src1++ * m1) >> 8; + *dst++ = (*src0++ * m0 + *src1++ * m1) >> 8; + *dst++ = (*src0++ * m0 + *src1++ * m1) >> 8; + *dst++ = (*src0++ * m0 + *src1++ * m1) >> 8; + len -= 4; + } + while (len > 0) { + *dst++ = (*src0++ * m0 + *src1++ * m1) >> 8; + len--; + } +} + static void mix_1_to_2_fltp_flt_c(float **samples, float **matrix, int len, int out_ch, int in_ch) { @@ -229,6 +273,12 @@ static int mix_function_init(AudioMix *am) ff_audio_mix_set_func(am, AV_SAMPLE_FMT_FLTP, AV_MIX_COEFF_TYPE_FLT, 2, 1, 1, 1, "C", mix_2_to_1_fltp_flt_c); + ff_audio_mix_set_func(am, AV_SAMPLE_FMT_S16P, AV_MIX_COEFF_TYPE_FLT, + 2, 1, 1, 1, "C", mix_2_to_1_s16p_flt_c); + + ff_audio_mix_set_func(am, AV_SAMPLE_FMT_S16P, AV_MIX_COEFF_TYPE_Q8, + 2, 1, 1, 1, "C", mix_2_to_1_s16p_q8_c); + ff_audio_mix_set_func(am, AV_SAMPLE_FMT_FLTP, AV_MIX_COEFF_TYPE_FLT, 1, 2, 1, 1, "C", mix_1_to_2_fltp_flt_c); From c140fb2cbc8e95f2533e51c0e4acf51211cf45cf Mon Sep 17 00:00:00 2001 From: Justin Ruggles Date: Mon, 23 Apr 2012 15:04:09 -0400 Subject: [PATCH 3/8] lavr: add x86-optimized functions for mixing 2 to 1 s16p with float coeffs --- libavresample/x86/audio_mix.asm | 45 ++++++++++++++++++++++++++++++ libavresample/x86/audio_mix_init.c | 13 +++++++++ libavresample/x86/util.asm | 34 ++++++++++++++++++++++ 3 files changed, 92 insertions(+) create mode 100644 libavresample/x86/util.asm diff --git a/libavresample/x86/audio_mix.asm b/libavresample/x86/audio_mix.asm index dbc79e585d..c2e310b3d5 100644 --- a/libavresample/x86/audio_mix.asm +++ b/libavresample/x86/audio_mix.asm @@ -21,6 +21,7 @@ %include "x86inc.asm" %include "x86util.asm" +%include "util.asm" SECTION_TEXT @@ -64,3 +65,47 @@ MIX_2_TO_1_FLTP_FLT INIT_YMM avx MIX_2_TO_1_FLTP_FLT %endif + +;----------------------------------------------------------------------------- +; void ff_mix_2_to_1_s16p_flt(int16_t **src, float **matrix, int len, +; int out_ch, int in_ch); +;----------------------------------------------------------------------------- + +%macro MIX_2_TO_1_S16P_FLT 0 +cglobal mix_2_to_1_s16p_flt, 3,4,6, src, matrix, len, src1 + mov src1q, [srcq+gprsize] + mov srcq, [srcq] + sub src1q, srcq + mov matrixq, [matrixq ] + VBROADCASTSS m4, [matrixq ] + VBROADCASTSS m5, [matrixq+4] + ALIGN 16 +.loop: + mova m0, [srcq ] + mova m2, [srcq+src1q] + S16_TO_S32_SX 0, 1 + S16_TO_S32_SX 2, 3 + cvtdq2ps m0, m0 + cvtdq2ps m1, m1 + cvtdq2ps m2, m2 + cvtdq2ps m3, m3 + mulps m0, m4 + mulps m1, m4 + mulps m2, m5 + mulps m3, m5 + addps m0, m2 + addps m1, m3 + cvtps2dq m0, m0 + cvtps2dq m1, m1 + packssdw m0, m1 + mova [srcq], m0 + add srcq, mmsize + sub lend, mmsize/2 + jg .loop + REP_RET +%endmacro + +INIT_XMM sse2 +MIX_2_TO_1_S16P_FLT +INIT_XMM sse4 +MIX_2_TO_1_S16P_FLT diff --git a/libavresample/x86/audio_mix_init.c b/libavresample/x86/audio_mix_init.c index 8f8930f836..947c3146ca 100644 --- a/libavresample/x86/audio_mix_init.c +++ b/libavresample/x86/audio_mix_init.c @@ -27,6 +27,11 @@ extern void ff_mix_2_to_1_fltp_flt_sse(float **src, float **matrix, int len, extern void ff_mix_2_to_1_fltp_flt_avx(float **src, float **matrix, int len, int out_ch, int in_ch); +extern void ff_mix_2_to_1_s16p_flt_sse2(int16_t **src, float **matrix, int len, + int out_ch, int in_ch); +extern void ff_mix_2_to_1_s16p_flt_sse4(int16_t **src, float **matrix, int len, + int out_ch, int in_ch); + av_cold void ff_audio_mix_init_x86(AudioMix *am) { #if HAVE_YASM @@ -36,6 +41,14 @@ av_cold void ff_audio_mix_init_x86(AudioMix *am) ff_audio_mix_set_func(am, AV_SAMPLE_FMT_FLTP, AV_MIX_COEFF_TYPE_FLT, 2, 1, 16, 8, "SSE", ff_mix_2_to_1_fltp_flt_sse); } + if (mm_flags & AV_CPU_FLAG_SSE2 && HAVE_SSE) { + ff_audio_mix_set_func(am, AV_SAMPLE_FMT_S16P, AV_MIX_COEFF_TYPE_FLT, + 2, 1, 16, 8, "SSE2", ff_mix_2_to_1_s16p_flt_sse2); + } + if (mm_flags & AV_CPU_FLAG_SSE4 && HAVE_SSE) { + ff_audio_mix_set_func(am, AV_SAMPLE_FMT_S16P, AV_MIX_COEFF_TYPE_FLT, + 2, 1, 16, 8, "SSE4", ff_mix_2_to_1_s16p_flt_sse4); + } if (mm_flags & AV_CPU_FLAG_AVX && HAVE_AVX) { ff_audio_mix_set_func(am, AV_SAMPLE_FMT_FLTP, AV_MIX_COEFF_TYPE_FLT, 2, 1, 32, 16, "AVX", ff_mix_2_to_1_fltp_flt_avx); diff --git a/libavresample/x86/util.asm b/libavresample/x86/util.asm new file mode 100644 index 0000000000..501f662d43 --- /dev/null +++ b/libavresample/x86/util.asm @@ -0,0 +1,34 @@ +;****************************************************************************** +;* x86 utility macros for libavresample +;* Copyright (c) 2012 Justin Ruggles +;* +;* This file is part of Libav. +;* +;* Libav is free software; you can redistribute it and/or +;* modify it under the terms of the GNU Lesser General Public +;* License as published by the Free Software Foundation; either +;* version 2.1 of the License, or (at your option) any later version. +;* +;* Libav is distributed in the hope that it will be useful, +;* but WITHOUT ANY WARRANTY; without even the implied warranty of +;* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;* Lesser General Public License for more details. +;* +;* You should have received a copy of the GNU Lesser General Public +;* License along with Libav; if not, write to the Free Software +;* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +;****************************************************************************** + +%macro S16_TO_S32_SX 2 ; src/low dst, high dst +%if cpuflag(sse4) + pmovsxwd m%2, m%1 + psrldq m%1, 8 + pmovsxwd m%1, m%1 + SWAP %1, %2 +%else + punpckhwd m%2, m%1 + punpcklwd m%1, m%1 + psrad m%2, 16 + psrad m%1, 16 +%endif +%endmacro From b75726cb7903c30663faadf615d41486cbb5e828 Mon Sep 17 00:00:00 2001 From: Justin Ruggles Date: Mon, 23 Apr 2012 15:10:35 -0400 Subject: [PATCH 4/8] lavr: add x86-optimized function for mixing 2 to 1 s16p with q8 coeffs --- libavresample/x86/audio_mix.asm | 41 ++++++++++++++++++++++++++++++ libavresample/x86/audio_mix_init.c | 5 ++++ 2 files changed, 46 insertions(+) diff --git a/libavresample/x86/audio_mix.asm b/libavresample/x86/audio_mix.asm index c2e310b3d5..8a4cf061cd 100644 --- a/libavresample/x86/audio_mix.asm +++ b/libavresample/x86/audio_mix.asm @@ -109,3 +109,44 @@ INIT_XMM sse2 MIX_2_TO_1_S16P_FLT INIT_XMM sse4 MIX_2_TO_1_S16P_FLT + +;----------------------------------------------------------------------------- +; void ff_mix_2_to_1_s16p_q8(int16_t **src, int16_t **matrix, int len, +; int out_ch, int in_ch); +;----------------------------------------------------------------------------- + +INIT_XMM sse2 +cglobal mix_2_to_1_s16p_q8, 3,4,6, src, matrix, len, src1 + mov src1q, [srcq+gprsize] + mov srcq, [srcq] + sub src1q, srcq + mov matrixq, [matrixq] + movd m4, [matrixq] + movd m5, [matrixq] + SPLATW m4, m4, 0 + SPLATW m5, m5, 1 + pxor m0, m0 + punpcklwd m4, m0 + punpcklwd m5, m0 + ALIGN 16 +.loop: + mova m0, [srcq ] + mova m2, [srcq+src1q] + punpckhwd m1, m0, m0 + punpcklwd m0, m0 + punpckhwd m3, m2, m2 + punpcklwd m2, m2 + pmaddwd m0, m4 + pmaddwd m1, m4 + pmaddwd m2, m5 + pmaddwd m3, m5 + paddd m0, m2 + paddd m1, m3 + psrad m0, 8 + psrad m1, 8 + packssdw m0, m1 + mova [srcq], m0 + add srcq, mmsize + sub lend, mmsize/2 + jg .loop + REP_RET diff --git a/libavresample/x86/audio_mix_init.c b/libavresample/x86/audio_mix_init.c index 947c3146ca..fa204d6d36 100644 --- a/libavresample/x86/audio_mix_init.c +++ b/libavresample/x86/audio_mix_init.c @@ -32,6 +32,9 @@ extern void ff_mix_2_to_1_s16p_flt_sse2(int16_t **src, float **matrix, int len, extern void ff_mix_2_to_1_s16p_flt_sse4(int16_t **src, float **matrix, int len, int out_ch, int in_ch); +extern void ff_mix_2_to_1_s16p_q8_sse2(int16_t **src, int16_t **matrix, + int len, int out_ch, int in_ch); + av_cold void ff_audio_mix_init_x86(AudioMix *am) { #if HAVE_YASM @@ -44,6 +47,8 @@ av_cold void ff_audio_mix_init_x86(AudioMix *am) if (mm_flags & AV_CPU_FLAG_SSE2 && HAVE_SSE) { ff_audio_mix_set_func(am, AV_SAMPLE_FMT_S16P, AV_MIX_COEFF_TYPE_FLT, 2, 1, 16, 8, "SSE2", ff_mix_2_to_1_s16p_flt_sse2); + ff_audio_mix_set_func(am, AV_SAMPLE_FMT_S16P, AV_MIX_COEFF_TYPE_Q8, + 2, 1, 16, 8, "SSE2", ff_mix_2_to_1_s16p_q8_sse2); } if (mm_flags & AV_CPU_FLAG_SSE4 && HAVE_SSE) { ff_audio_mix_set_func(am, AV_SAMPLE_FMT_S16P, AV_MIX_COEFF_TYPE_FLT, From 43b50e62c430adca04d26901b3c957fd9ea0e453 Mon Sep 17 00:00:00 2001 From: Luca Barbato Date: Tue, 29 May 2012 13:14:10 -0700 Subject: [PATCH 5/8] avprobe: correctly set the default formatter --- avprobe.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/avprobe.c b/avprobe.c index 3a0ee28f8d..2464f8623a 100644 --- a/avprobe.c +++ b/avprobe.c @@ -933,6 +933,16 @@ int main(int argc, char **argv) #endif show_banner(); + + octx.print_header = ini_print_header; + octx.print_footer = ini_print_footer; + + octx.print_array_header = ini_print_array_header; + octx.print_object_header = ini_print_object_header; + + octx.print_integer = ini_print_integer; + octx.print_string = ini_print_string; + parse_options(NULL, argc, argv, options, opt_input_file); if (!input_filename) { @@ -949,15 +959,6 @@ int main(int argc, char **argv) if (!probe_out) exit(1); - octx.print_header = ini_print_header; - octx.print_footer = ini_print_footer; - - octx.print_array_header = ini_print_array_header; - octx.print_object_header = ini_print_object_header; - - octx.print_integer = ini_print_integer; - octx.print_string = ini_print_string; - probe_header(); ret = probe_file(input_filename); probe_footer(); From 00c78a0a151ce6a0c277c1d6736517759ae77aae Mon Sep 17 00:00:00 2001 From: Mans Rullgard Date: Wed, 30 May 2012 03:31:16 +0100 Subject: [PATCH 6/8] fate: fix md5sum replacement on some systems On systems where the 'md5' command is used, there is a conflict with the md5() shell function in fate-run.sh. Using the 'command' keyword bypasses the shell function for correct behaviour. Signed-off-by: Mans Rullgard --- tests/md5.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/md5.sh b/tests/md5.sh index 16b0281c00..4b95127701 100644 --- a/tests/md5.sh +++ b/tests/md5.sh @@ -2,8 +2,8 @@ if [ X"$(echo | md5sum 2> /dev/null)" != X ]; then do_md5sum() { md5sum -b $1; } -elif [ X"$(echo | md5 2> /dev/null)" != X ]; then - do_md5sum() { md5 $1 | sed 's#MD5 (\(.*\)) = \(.*\)#\2 *\1#'; } +elif [ X"$(echo | command md5 2> /dev/null)" != X ]; then + do_md5sum() { command md5 $1 | sed 's#MD5 (\(.*\)) = \(.*\)#\2 *\1#'; } elif [ -x /sbin/md5 ]; then do_md5sum() { /sbin/md5 -r $1 | sed 's# \**\./# *./#'; } elif openssl version >/dev/null 2>&1; then From 0857e46dd5f6d4d9b9b946492fe0c951485bdbe7 Mon Sep 17 00:00:00 2001 From: Mans Rullgard Date: Wed, 30 May 2012 05:17:50 +0100 Subject: [PATCH 7/8] fate: add missing $(TARGET_PATH) to ac3-fixed-encode Signed-off-by: Mans Rullgard --- tests/fate/ac3.mak | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/fate/ac3.mak b/tests/fate/ac3.mak index 5e5d06ab44..4fafb053d8 100644 --- a/tests/fate/ac3.mak +++ b/tests/fate/ac3.mak @@ -48,7 +48,7 @@ fate-eac3-encode: FUZZ = 3 FATE_AC3 += fate-ac3-fixed-encode fate-ac3-fixed-encode: tests/data/asynth-44100-2.wav -fate-ac3-fixed-encode: SRC = tests/data/asynth-44100-2.wav +fate-ac3-fixed-encode: SRC = $(TARGET_PATH)/tests/data/asynth-44100-2.wav fate-ac3-fixed-encode: CMD = md5 -i $(SRC) -c ac3_fixed -b 128k -f ac3 fate-ac3-fixed-encode: CMP = oneline fate-ac3-fixed-encode: REF = a1d1fc116463b771abf5aef7ed37d7b1 From d041dec3cba300aef6e489990be7242dcd808441 Mon Sep 17 00:00:00 2001 From: Christian Schmidt Date: Wed, 30 May 2012 11:40:23 +0000 Subject: [PATCH 8/8] pcm-mpeg: improve log message wording We support every defined value for channel layout, bitrate and sample depth. All other values are not unsupported, but reserved. Update comments to say "are used" instead of "are known or exist". Signed-off-by: Derek Buitenhuis --- libavcodec/pcm-mpeg.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/libavcodec/pcm-mpeg.c b/libavcodec/pcm-mpeg.c index 8340715cb5..014fc91df1 100644 --- a/libavcodec/pcm-mpeg.c +++ b/libavcodec/pcm-mpeg.c @@ -70,14 +70,14 @@ static int pcm_bluray_parse_header(AVCodecContext *avctx, /* get the sample depth and derive the sample format from it */ avctx->bits_per_coded_sample = bits_per_samples[header[3] >> 6]; if (!avctx->bits_per_coded_sample) { - av_log(avctx, AV_LOG_ERROR, "unsupported sample depth (0)\n"); + av_log(avctx, AV_LOG_ERROR, "reserved sample depth (0)\n"); return -1; } avctx->sample_fmt = avctx->bits_per_coded_sample == 16 ? AV_SAMPLE_FMT_S16 : AV_SAMPLE_FMT_S32; avctx->bits_per_raw_sample = avctx->bits_per_coded_sample; - /* get the sample rate. Not all values are known or exist. */ + /* get the sample rate. Not all values are used. */ switch (header[2] & 0x0f) { case 1: avctx->sample_rate = 48000; @@ -90,13 +90,13 @@ static int pcm_bluray_parse_header(AVCodecContext *avctx, break; default: avctx->sample_rate = 0; - av_log(avctx, AV_LOG_ERROR, "unsupported sample rate (%d)\n", + av_log(avctx, AV_LOG_ERROR, "reserved sample rate (%d)\n", header[2] & 0x0f); return -1; } /* - * get the channel number (and mapping). Not all values are known or exist. + * get the channel number (and mapping). Not all values are used. * It must be noted that the number of channels in the MPEG stream can * differ from the actual meaningful number, e.g. mono audio still has two * channels, one being empty. @@ -104,7 +104,7 @@ static int pcm_bluray_parse_header(AVCodecContext *avctx, avctx->channel_layout = channel_layouts[channel_layout]; avctx->channels = channels[channel_layout]; if (!avctx->channels) { - av_log(avctx, AV_LOG_ERROR, "unsupported channel configuration (%d)\n", + av_log(avctx, AV_LOG_ERROR, "reserved channel configuration (%d)\n", channel_layout); return -1; }