[FFmpeg-devel] [PATCH] avformat/rawenc: Store sample number for ADX

Paul B Mahol onemda at gmail.com
Sun Jun 21 10:32:46 CEST 2015


Dana 21. 6. 2015. 00:32 osoba "Michael Niedermayer" <michaelni at gmx.at>
napisala je:
>
> Fixes Ticket4540
>
> Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
> ---
>  libavformat/rawenc.c               |   20 ++++++++++++++++++++
>  tests/ref/acodec/adpcm-adx         |    2 +-
>  tests/ref/acodec/adpcm-adx-trellis |    2 +-
>  3 files changed, 22 insertions(+), 2 deletions(-)
>
> diff --git a/libavformat/rawenc.c b/libavformat/rawenc.c
> index e59f1ae..d65c7c7 100644
> --- a/libavformat/rawenc.c
> +++ b/libavformat/rawenc.c
> @@ -56,6 +56,25 @@ AVOutputFormat ff_ac3_muxer = {
>  #endif
>
>  #if CONFIG_ADX_MUXER
> +
> +static int adx_write_trailer(AVFormatContext *s)
> +{
> +    AVIOContext *pb = s->pb;
> +    AVCodecContext *avctx = s->streams[0]->codec;
> +
> +    if (pb->seekable) {
> +        int64_t file_size = avio_tell(pb);
> +        uint64_t sample_count = (file_size - 36) / avctx->channels / 18
* 32;
> +        if (sample_count <= UINT32_MAX) {
> +            avio_seek(pb, 12, SEEK_SET);
> +            avio_wb32(pb, sample_count);
> +            avio_seek(pb, file_size, SEEK_SET);
> +        }
> +    }
> +
> +    return 0;
> +}
> +
>  AVOutputFormat ff_adx_muxer = {
>      .name              = "adx",
>      .long_name         = NULL_IF_CONFIG_SMALL("CRI ADX"),
> @@ -64,6 +83,7 @@ AVOutputFormat ff_adx_muxer = {
>      .video_codec       = AV_CODEC_ID_NONE,
>      .write_header      = force_one_stream,
>      .write_packet      = ff_raw_write_packet,
> +    .write_trailer     = adx_write_trailer,
>      .flags             = AVFMT_NOTIMESTAMPS,
>  };
>  #endif
> diff --git a/tests/ref/acodec/adpcm-adx b/tests/ref/acodec/adpcm-adx
> index 34dd9b6..8c40100 100644
> --- a/tests/ref/acodec/adpcm-adx
> +++ b/tests/ref/acodec/adpcm-adx
> @@ -1,4 +1,4 @@
> -d7ec7d52a2f5c91464812d031b07cc1d *tests/data/fate/acodec-adpcm-adx.adx
> +6bf1a8e5ec9cc958a31cb2b1b66bfc75 *tests/data/fate/acodec-adpcm-adx.adx
>  297720 tests/data/fate/acodec-adpcm-adx.adx
>  5b5a436ec9d528d6eb0bebaf667521b0
*tests/data/fate/acodec-adpcm-adx.out.wav
>  stddev: 2549.93 PSNR: 28.20 MAXDIFF:57514 bytes:  1058400/  1058432
> diff --git a/tests/ref/acodec/adpcm-adx-trellis
b/tests/ref/acodec/adpcm-adx-trellis
> index d620d4a..039f69f 100644
> --- a/tests/ref/acodec/adpcm-adx-trellis
> +++ b/tests/ref/acodec/adpcm-adx-trellis
> @@ -1,4 +1,4 @@
> -d7ec7d52a2f5c91464812d031b07cc1d
*tests/data/fate/acodec-adpcm-adx-trellis.adx
> +6bf1a8e5ec9cc958a31cb2b1b66bfc75
*tests/data/fate/acodec-adpcm-adx-trellis.adx
>  297720 tests/data/fate/acodec-adpcm-adx-trellis.adx
>  5b5a436ec9d528d6eb0bebaf667521b0
*tests/data/fate/acodec-adpcm-adx-trellis.out.wav
>  stddev: 2549.93 PSNR: 28.20 MAXDIFF:57514 bytes:  1058400/  1058432
> --
> 1.7.9.5
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

LGTM


More information about the ffmpeg-devel mailing list