[FFmpeg-cvslog] doc/filters: fix order of tinterlace filter drop modes
ffmpeg | branch: master | Paul B Mahol | Fri May 20 09:50:00 2016 +0200| [8b5941ce5954e26d372b8bf88babfa3d62175dd0] | committer: Paul B Mahol doc/filters: fix order of tinterlace filter drop modes Signed-off-by: Paul B Mahol > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=8b5941ce5954e26d372b8bf88babfa3d62175dd0 --- doc/filters.texi | 26 ++ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/doc/filters.texi b/doc/filters.texi index 27584e9..b35c651 100644 --- a/doc/filters.texi +++ b/doc/filters.texi @@ -12669,8 +12669,8 @@ Output: 2 4 @end example -@item drop_odd, 1 -Only output even frames, odd frames are dropped, generating a frame with +@item drop_even, 1 +Only output odd frames, even frames are dropped, generating a frame with unchanged height at half frame rate. @example @@ -12684,14 +12684,14 @@ Frame 1 Frame 2 Frame 3 Frame 4 1 2 3 4 Output: -2 4 -2 4 -2 4 -2 4 +1 3 +1 3 +1 3 +1 3 @end example -@item drop_even, 2 -Only output odd frames, even frames are dropped, generating a frame with +@item drop_odd, 2 +Only output even frames, odd frames are dropped, generating a frame with unchanged height at half frame rate. @example @@ -12705,10 +12705,10 @@ Frame 1 Frame 2 Frame 3 Frame 4 1 2 3 4 Output: -1 3 -1 3 -1 3 -1 3 +2 4 +2 4 +2 4 +2 4 @end example @item pad, 3 @@ -12805,9 +12805,11 @@ Output: 1 1 2 2 3 3 4 @end example + @item mergex2, 7 Move odd frames into the upper field, even into the lower field, generating a double height frame at same frame rate. + @example --> time Input: ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avcodec/dca: remove Rice code length limit
ffmpeg | branch: master | foo86 | Fri May 13 12:48:23 2016 +0300| [e0706e9cc8f30a8242d2b140edace7bf76170506] | committer: James Almer avcodec/dca: remove Rice code length limit Signed-off-by: James Almer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=e0706e9cc8f30a8242d2b140edace7bf76170506 --- libavcodec/dca_xll.c |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/dca_xll.c b/libavcodec/dca_xll.c index 316af27..e43ee6a 100644 --- a/libavcodec/dca_xll.c +++ b/libavcodec/dca_xll.c @@ -32,7 +32,7 @@ static int get_linear(GetBitContext *gb, int n) static int get_rice_un(GetBitContext *gb, int k) { -unsigned int v = get_unary(gb, 1, 128); +unsigned int v = get_unary(gb, 1, get_bits_left(gb)); return (v << k) | get_bits_long(gb, k); } ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avutil/eval-test: Check av_expr_parse_and_eval() for failure and also check it in the fate test
ffmpeg | branch: master | Michael Niedermayer | Fri May 20 18:00:35 2016 +0200| [b50bd695168976b70e5fab2f2f3a9b0ef8063157] | committer: Michael Niedermayer avutil/eval-test: Check av_expr_parse_and_eval() for failure and also check it in the fate test Fixes CID1361940 Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b50bd695168976b70e5fab2f2f3a9b0ef8063157 --- libavutil/eval-test.c | 17 + tests/ref/fate/eval | 26 ++ 2 files changed, 39 insertions(+), 4 deletions(-) diff --git a/libavutil/eval-test.c b/libavutil/eval-test.c index 8e53f48..17a63cc 100644 --- a/libavutil/eval-test.c +++ b/libavutil/eval-test.c @@ -139,33 +139,42 @@ int main(int argc, char **argv) "clip(0, 0/0, 1)", NULL }; +int ret; for (expr = exprs; *expr; expr++) { printf("Evaluating '%s'\n", *expr); -av_expr_parse_and_eval(&d, *expr, +ret = av_expr_parse_and_eval(&d, *expr, const_names, const_values, NULL, NULL, NULL, NULL, NULL, 0, NULL); if (isnan(d)) printf("'%s' -> nan\n\n", *expr); else printf("'%s' -> %f\n\n", *expr, d); +if (ret < 0) +printf("av_expr_parse_and_eval failed\n"); } -av_expr_parse_and_eval(&d, "1+(5-2)^(3-1)+1/2+sin(PI)-max(-2.2,-3.1)", +ret = av_expr_parse_and_eval(&d, "1+(5-2)^(3-1)+1/2+sin(PI)-max(-2.2,-3.1)", const_names, const_values, NULL, NULL, NULL, NULL, NULL, 0, NULL); printf("%f == 12.7\n", d); -av_expr_parse_and_eval(&d, "80G/80Gi", +if (ret < 0) +printf("av_expr_parse_and_eval failed\n"); +ret = av_expr_parse_and_eval(&d, "80G/80Gi", const_names, const_values, NULL, NULL, NULL, NULL, NULL, 0, NULL); printf("%f == 0.931322575\n", d); +if (ret < 0) +printf("av_expr_parse_and_eval failed\n"); if (argc > 1 && !strcmp(argv[1], "-t")) { for (i = 0; i < 1050; i++) { START_TIMER; -av_expr_parse_and_eval(&d, "1+(5-2)^(3-1)+1/2+sin(PI)-max(-2.2,-3.1)", +ret = av_expr_parse_and_eval(&d, "1+(5-2)^(3-1)+1/2+sin(PI)-max(-2.2,-3.1)", const_names, const_values, NULL, NULL, NULL, NULL, NULL, 0, NULL); +if (ret < 0) +printf("av_expr_parse_and_eval failed\n"); STOP_TIMER("av_expr_parse_and_eval"); } } diff --git a/tests/ref/fate/eval b/tests/ref/fate/eval index 914b13c..5b4d93f 100644 --- a/tests/ref/fate/eval +++ b/tests/ref/fate/eval @@ -1,6 +1,7 @@ Evaluating '' '' -> nan +av_expr_parse_and_eval failed Evaluating '1;2' '1;2' -> 2.00 @@ -28,45 +29,58 @@ Evaluating '1Gi' Evaluating '1gi' '1gi' -> nan +av_expr_parse_and_eval failed Evaluating '1GiFoo' '1GiFoo' -> nan +av_expr_parse_and_eval failed Evaluating '1k+1k' '1k+1k' -> 2000.00 Evaluating '1Gi*3foo' '1Gi*3foo' -> nan +av_expr_parse_and_eval failed Evaluating 'foo' 'foo' -> nan +av_expr_parse_and_eval failed Evaluating 'foo(' 'foo(' -> nan +av_expr_parse_and_eval failed Evaluating 'foo()' 'foo()' -> nan +av_expr_parse_and_eval failed Evaluating 'foo)' 'foo)' -> nan +av_expr_parse_and_eval failed Evaluating 'sin' 'sin' -> nan +av_expr_parse_and_eval failed Evaluating 'sin(' 'sin(' -> nan +av_expr_parse_and_eval failed Evaluating 'sin()' 'sin()' -> nan +av_expr_parse_and_eval failed Evaluating 'sin)' 'sin)' -> nan +av_expr_parse_and_eval failed Evaluating 'sin 10' 'sin 10' -> nan +av_expr_parse_and_eval failed Evaluating 'sin(1,2,3)' 'sin(1,2,3)' -> nan +av_expr_parse_and_eval failed Evaluating 'sin(1 )' 'sin(1 )' -> 0.841471 @@ -76,15 +90,19 @@ Evaluating '1' Evaluating '1foo' '1foo' -> nan +av_expr_parse_and_eval failed Evaluating 'bar + PI + E + 100f*2 + foo' 'bar + PI + E + 100f*2 + foo' -> nan +av_expr_parse_and_eval failed Evaluating '13k + 12f - foo(1, 2)' '13k + 12f - foo(1, 2)' -> nan +av_expr_parse_and_eval failed Evaluating '1gi' '1gi' -> nan +av_expr_parse_and_eval failed Evaluating '1Gi' '1Gi' -> 1073741824.00 @@ -127,6 +145,7 @@ Evaluating 'st(1, 1); st(2, 2); st(0, 1); while(lte(ld(0),10), st(3, ld(1)+ld(2) Evaluating 'while(0, 10)' 'while(0, 10)' -> nan +av_expr_parse_and_eval failed Evaluating 'st(0, 1); while(lte(ld(0),100), st(1, ld(1)+ld(0)); st(0, ld(0)+1))' 'st(0, 1); while(lte(ld(0),100), st(1, ld(1)+ld(0)); st(0, ld(0)+1))' -> 101.00 @@ -151,6 +170,7 @@ Evaluating 'isinf(INF)' Evaluating 'floor(NAN)' 'floor(NAN)' -> nan +av_expr_parse_and_eval failed Evaluating 'floor(123.123)' 'floor(123.123)' -> 123.00 @@ -202,6 +222,7 @@ Evaluating 'PI^1.23' Evaluating 'pow(-1,1.23)' 'pow(-1,1.23)' ->
[FFmpeg-cvslog] avcodec/dca: remove useless debug message
ffmpeg | branch: master | foo86 | Fri May 13 12:48:32 2016 +0300| [b5cda23039115e2bb83304462723c5f198c4418e] | committer: James Almer avcodec/dca: remove useless debug message Most DTS-in-WAV streams trigger this, making debug output hard to read. Signed-off-by: James Almer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b5cda23039115e2bb83304462723c5f198c4418e --- libavcodec/dca_core.c |4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/libavcodec/dca_core.c b/libavcodec/dca_core.c index f6c22ca..46825ed 100644 --- a/libavcodec/dca_core.c +++ b/libavcodec/dca_core.c @@ -1921,10 +1921,8 @@ int ff_dca_core_parse(DCACoreDecoder *s, uint8_t *data, int size) return ret; // Workaround for DTS in WAV -if (s->frame_size > size && s->frame_size < size + 4) { -av_log(s->avctx, AV_LOG_DEBUG, "Working around excessive core frame size (%d > %d)\n", s->frame_size, size); +if (s->frame_size > size && s->frame_size < size + 4) s->frame_size = size; -} if (ff_dca_seek_bits(&s->gb, s->frame_size * 8)) { av_log(s->avctx, AV_LOG_ERROR, "Read past end of core frame\n"); ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avcodec/dca: don't set initial sample_fmt
ffmpeg | branch: master | foo86 | Fri May 13 12:48:26 2016 +0300| [39f7620d76c7a133535ed7a535f7a74fefa6e435] | committer: James Almer avcodec/dca: don't set initial sample_fmt Valid sample_fmt will be set by dcadec_decode_frame() based on stream type. Signed-off-by: James Almer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=39f7620d76c7a133535ed7a535f7a74fefa6e435 --- libavcodec/dcadec.c |3 --- 1 file changed, 3 deletions(-) diff --git a/libavcodec/dcadec.c b/libavcodec/dcadec.c index f31b658..417632f 100644 --- a/libavcodec/dcadec.c +++ b/libavcodec/dcadec.c @@ -378,9 +378,6 @@ static av_cold int dcadec_init(AVCodecContext *avctx) break; } -avctx->sample_fmt = AV_SAMPLE_FMT_S32P; -avctx->bits_per_raw_sample = 24; - return 0; } ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avcodec/dca_parser: improve frame end search
ffmpeg | branch: master | foo86 | Fri May 13 12:48:28 2016 +0300| [a0349ae27c127df8c72de1c30dc4090360ec7ef4] | committer: James Almer avcodec/dca_parser: improve frame end search Parse core frame size directly when searching for frame end instead of using value extracted from previous frame. Account for unused bits when calculating sync word distance for 14-bit streams to avoid alias sync detection. Parse EXSS frame size and skip over EXSS frame to avoid alias sync detection. Signed-off-by: James Almer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=a0349ae27c127df8c72de1c30dc4090360ec7ef4 --- libavcodec/dca_parser.c | 94 --- 1 file changed, 80 insertions(+), 14 deletions(-) diff --git a/libavcodec/dca_parser.c b/libavcodec/dca_parser.c index bde7dfe..0b09ba5 100644 --- a/libavcodec/dca_parser.c +++ b/libavcodec/dca_parser.c @@ -47,6 +47,14 @@ typedef struct DCAParseContext { #define CORE_MARKER(state) ((state >> 16) & 0x) #define EXSS_MARKER(state) (state & 0x) +#define STATE_LE(state) (((state & 0xFF00FF00) >> 8) | ((state & 0x00FF00FF) << 8)) +#define STATE_14(state) (((state & 0x3FFF) >> 8) | ((state & 0x3FFF) >> 6)) + +#define CORE_FRAMESIZE(state) (((state >> 4) & 0x3FFF) + 1) +#define EXSS_FRAMESIZE(state) ((state & 0x20) ? \ + ((state >> 5) & 0xF) + 1 : \ + ((state >> 13) & 0x0) + 1) + /** * Find the end of the current frame in the bitstream. * @return the position of the first byte of the next frame, or -1 @@ -54,12 +62,13 @@ typedef struct DCAParseContext { static int dca_find_frame_end(DCAParseContext *pc1, const uint8_t *buf, int buf_size) { -int start_found, i; +int start_found, size, i; uint64_t state; ParseContext *pc = &pc1->pc; start_found = pc->frame_start_found; state = pc->state64; +size= pc1->size; i = 0; if (!start_found) { @@ -80,15 +89,75 @@ static int dca_find_frame_end(DCAParseContext *pc1, const uint8_t *buf, } } } + if (start_found) { for (; i < buf_size; i++) { -pc1->size++; +size++; state = (state << 8) | buf[i]; + +if (start_found == 1) { +switch (pc1->lastmarker) { +case DCA_SYNCWORD_CORE_BE: +if (size == 2) { +pc1->framesize = CORE_FRAMESIZE(state); +start_found= 2; +} +break; +case DCA_SYNCWORD_CORE_LE: +if (size == 2) { +pc1->framesize = CORE_FRAMESIZE(STATE_LE(state)); +start_found= 2; +} +break; +case DCA_SYNCWORD_CORE_14B_BE: +if (size == 4) { +pc1->framesize = CORE_FRAMESIZE(STATE_14(state)) * 8 / 14 * 2; +start_found= 2; +} +break; +case DCA_SYNCWORD_CORE_14B_LE: +if (size == 4) { +pc1->framesize = CORE_FRAMESIZE(STATE_14(STATE_LE(state))) * 8 / 14 * 2; +start_found= 2; +} +break; +case DCA_SYNCWORD_SUBSTREAM: +if (size == 6) { +pc1->framesize = EXSS_FRAMESIZE(state); +start_found= 2; +} +break; +default: +av_assert0(0); +} +continue; +} + +if (pc1->lastmarker == DCA_SYNCWORD_CORE_BE) { +if (pc1->framesize > size + 2) +continue; + +if (start_found == 2 && IS_EXSS_MARKER(state)) { +pc1->framesize = size + 2; +start_found= 3; +continue; +} + +if (start_found == 3) { +if (size == pc1->framesize + 4) { +pc1->framesize += EXSS_FRAMESIZE(state); +start_found = 4; +} +continue; +} +} + +if (pc1->framesize > size) +continue; + if (IS_MARKER(state) && (pc1->lastmarker == CORE_MARKER(state) || pc1->lastmarker == DCA_SYNCWORD_SUBSTREAM)) { -if (pc1->framesize > pc1->size) -continue; pc->frame_start_found = 0; pc->state64 = -1; pc1->size = 0; @@ -96,8 +165,10 @@ static int dca_find_frame_end(DC
[FFmpeg-cvslog] avcodec/dca: simplify 'residual ok' flag tracking
ffmpeg | branch: master | foo86 | Fri May 13 12:48:24 2016 +0300| [801dbf0269b1bb5bc70c550e971491e0aea9eb70] | committer: James Almer avcodec/dca: simplify 'residual ok' flag tracking Move this from separate structure field to a packet flag. Behavior should be equivalent, except that residual flag is now properly cleared when packet has no core frame at all. Also print a message when forcing recovery mode due to invalid residual to make debugging easier. Signed-off-by: James Almer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=801dbf0269b1bb5bc70c550e971491e0aea9eb70 --- libavcodec/dcadec.c | 32 ++-- libavcodec/dcadec.h |7 --- 2 files changed, 18 insertions(+), 21 deletions(-) diff --git a/libavcodec/dcadec.c b/libavcodec/dcadec.c index 417632f..565242d 100644 --- a/libavcodec/dcadec.c +++ b/libavcodec/dcadec.c @@ -193,10 +193,8 @@ static int dcadec_decode_frame(AVCodecContext *avctx, void *data, if (AV_RB32(input) == DCA_SYNCWORD_CORE_BE) { int frame_size; -if ((ret = ff_dca_core_parse(&s->core, input, input_size)) < 0) { -s->core_residual_valid = 0; +if ((ret = ff_dca_core_parse(&s->core, input, input_size)) < 0) return ret; -} s->packet |= DCA_PACKET_CORE; @@ -265,19 +263,20 @@ static int dcadec_decode_frame(AVCodecContext *avctx, void *data, if (s->xll.chset[0].freq == 96000 && s->core.sample_rate == 48000) x96_synth = 1; -if ((ret = ff_dca_core_filter_fixed(&s->core, x96_synth)) < 0) { -s->core_residual_valid = 0; +if ((ret = ff_dca_core_filter_fixed(&s->core, x96_synth)) < 0) return ret; -} // Force lossy downmixed output on the first core frame filtered. // This prevents audible clicks when seeking and is consistent with // what reference decoder does when there are multiple channel sets. -if (!s->core_residual_valid) { -if (s->xll.nreschsets > 0 && s->xll.nchsets > 1) -s->packet |= DCA_PACKET_RECOVERY; -s->core_residual_valid = 1; +if (!(prev_packet & DCA_PACKET_RESIDUAL) && s->xll.nreschsets > 0 +&& s->xll.nchsets > 1) { +av_log(avctx, AV_LOG_VERBOSE, "Forcing XLL recovery mode\n"); +s->packet |= DCA_PACKET_RECOVERY; } + +// Set 'residual ok' flag for the next frame +s->packet |= DCA_PACKET_RESIDUAL; } if ((ret = ff_dca_xll_filter_frame(&s->xll, frame)) < 0) { @@ -286,17 +285,14 @@ static int dcadec_decode_frame(AVCodecContext *avctx, void *data, return ret; if (ret != AVERROR_INVALIDDATA || (avctx->err_recognition & AV_EF_EXPLODE)) return ret; -if ((ret = ff_dca_core_filter_frame(&s->core, frame)) < 0) { -s->core_residual_valid = 0; +if ((ret = ff_dca_core_filter_frame(&s->core, frame)) < 0) return ret; -} } } else if (s->packet & DCA_PACKET_CORE) { -if ((ret = ff_dca_core_filter_frame(&s->core, frame)) < 0) { -s->core_residual_valid = 0; +if ((ret = ff_dca_core_filter_frame(&s->core, frame)) < 0) return ret; -} -s->core_residual_valid = !!(s->core.filter_mode & DCA_FILTER_MODE_FIXED); +if (s->core.filter_mode & DCA_FILTER_MODE_FIXED) +s->packet |= DCA_PACKET_RESIDUAL; } else { av_log(avctx, AV_LOG_ERROR, "No valid DCA sub-stream found\n"); if (s->core_only) @@ -317,7 +313,7 @@ static av_cold void dcadec_flush(AVCodecContext *avctx) ff_dca_xll_flush(&s->xll); ff_dca_lbr_flush(&s->lbr); -s->core_residual_valid = 0; +s->packet &= DCA_PACKET_MASK; } static av_cold int dcadec_close(AVCodecContext *avctx) diff --git a/libavcodec/dcadec.h b/libavcodec/dcadec.h index 5e47077..8528332 100644 --- a/libavcodec/dcadec.h +++ b/libavcodec/dcadec.h @@ -40,7 +40,10 @@ #define DCA_PACKET_EXSS 0x02 #define DCA_PACKET_XLL 0x04 #define DCA_PACKET_LBR 0x08 -#define DCA_PACKET_RECOVERY 0x10 +#define DCA_PACKET_MASK 0x0f + +#define DCA_PACKET_RECOVERY 0x10///< Sync error recovery flag +#define DCA_PACKET_RESIDUAL 0x20///< Core valid for residual decoding typedef struct DCAContext { const AVClass *class; ///< class for AVOptions @@ -60,8 +63,6 @@ typedef struct DCAContext { int packet; ///< Packet flags -int core_residual_valid;///< Core valid for residual decoding - int request_channel_layout; ///< Converted from avctx.request_channel_layout int core_only; ///< Core only decoding flag } DCAContext; ___ ffmpeg-cvslog mailing list ffmp
[FFmpeg-cvslog] avcodec/dca: use LUT for LBR frequency ranges
ffmpeg | branch: master | foo86 | Fri May 13 12:48:27 2016 +0300| [64fe1eebddbbf705d0c25d000c102bfca5558682] | committer: James Almer avcodec/dca: use LUT for LBR frequency ranges Values for unsupported frequencies > 48000 Hz are still included (parser will make use of them). Also convert sampling frequencies array to unsigned. Signed-off-by: James Almer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=64fe1eebddbbf705d0c25d000c102bfca5558682 --- libavcodec/dca_lbr.c | 15 +-- libavcodec/dcadata.c |6 +- libavcodec/dcadata.h |3 ++- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/libavcodec/dca_lbr.c b/libavcodec/dca_lbr.c index 9a7f4cd..f116ab9 100644 --- a/libavcodec/dca_lbr.c +++ b/libavcodec/dca_lbr.c @@ -1000,15 +1000,15 @@ static int parse_decoder_init(DCALbrDecoder *s, GetByteContext *gb) int old_band_limit = s->band_limit; int old_nchannels = s->nchannels; int version, bit_rate_hi; -unsigned int code; +unsigned int sr_code; // Sample rate of LBR audio -code = bytestream2_get_byte(gb); -if (code >= FF_ARRAY_ELEMS(ff_dca_sampling_freqs)) { +sr_code = bytestream2_get_byte(gb); +if (sr_code >= FF_ARRAY_ELEMS(ff_dca_sampling_freqs)) { av_log(s->avctx, AV_LOG_ERROR, "Invalid LBR sample rate\n"); return AVERROR_INVALIDDATA; } -s->sample_rate = ff_dca_sampling_freqs[code]; +s->sample_rate = ff_dca_sampling_freqs[sr_code]; if (s->sample_rate > 48000) { avpriv_report_missing_feature(s->avctx, "%d Hz LBR sample rate", s->sample_rate); return AVERROR_PATCHWELCOME; @@ -1076,12 +1076,7 @@ static int parse_decoder_init(DCALbrDecoder *s, GetByteContext *gb) } // Setup frequency range -if (s->sample_rate < 14000) -s->freq_range = 0; -else if (s->sample_rate < 28000) -s->freq_range = 1; -else -s->freq_range = 2; +s->freq_range = ff_dca_freq_ranges[sr_code]; // Setup resolution profile if (s->bit_rate_orig >= 44000 * (s->nchannels_total + 2)) diff --git a/libavcodec/dcadata.c b/libavcodec/dcadata.c index 53be01d..2d533d0 100644 --- a/libavcodec/dcadata.c +++ b/libavcodec/dcadata.c @@ -8725,11 +8725,15 @@ const int32_t ff_dca_xll_band_coeff[20] = { 3259333, -5074941, 6928550, -8204883 }; -const int32_t ff_dca_sampling_freqs[16] = { +const uint32_t ff_dca_sampling_freqs[16] = { 8000, 16000, 32000, 64000, 128000, 22050, 44100, 88200, 176400, 352800, 12000, 24000, 48000, 96000, 192000, 384000, }; +const uint8_t ff_dca_freq_ranges[16] = { +0, 1, 2, 3, 4, 1, 2, 3, 4, 4, 0, 1, 2, 3, 4, 4 +}; + const uint16_t ff_dca_avg_g3_freqs[3] = { 16000, 18000, 24000 }; const uint16_t ff_dca_fst_amp[44] = { diff --git a/libavcodec/dcadata.h b/libavcodec/dcadata.h index 0c54225..1ef1342 100644 --- a/libavcodec/dcadata.h +++ b/libavcodec/dcadata.h @@ -71,7 +71,8 @@ extern const uint16_t ff_dca_xll_refl_coeff[128]; extern const int32_t ff_dca_xll_band_coeff[20]; -extern const int32_t ff_dca_sampling_freqs[16]; +extern const uint32_t ff_dca_sampling_freqs[16]; +extern const uint8_t ff_dca_freq_ranges[16]; extern const uint16_t ff_dca_avg_g3_freqs[3]; ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog