Re: [FFmpeg-devel] [PATCH v2 6/6] avformat/audiointerleave: only keep the retime functionality of the audio interleaver
On Sun, 26 Apr 2020, Andreas Rheinhardt wrote: Marton Balint: And rename it to retimeinterleave, use the pcm_rechunk bitstream filter for rechunking. By seperating the two functions we hopefully get cleaner code. Signed-off-by: Marton Balint --- configure | 2 + libavformat/Makefile | 4 +- libavformat/gxfenc.c | 29 libavformat/mux.c | 1 - libavformat/mxfenc.c | 32 ++ libavformat/retimeinterleave.c | 51 ++ .../{audiointerleave.h => retimeinterleave.h} | 31 ++--- libavformat/utils.c| 1 - 8 files changed, 111 insertions(+), 40 deletions(-) create mode 100644 libavformat/retimeinterleave.c rename libavformat/{audiointerleave.h => retimeinterleave.h} (57%) Why don't you delete audiointerleave.c? (I would have expected to see more deletions than insertions.) That was my intention, but it creeped back during a rebase. Will delete it. diff --git a/configure b/configure index 4f285f0074..f5a84c31bd 100755 --- a/configure +++ b/configure @@ -2722,6 +2722,7 @@ fraps_decoder_select="bswapdsp huffman" g2m_decoder_deps="zlib" g2m_decoder_select="blockdsp idctdsp jpegtables" g729_decoder_select="audiodsp" +gxf_encoder_select="pcm_rechunk_bsf" h261_decoder_select="mpegvideo" h261_encoder_select="mpegvideoenc" h263_decoder_select="h263_parser h263dsp mpegvideo qpeldsp" @@ -2794,6 +2795,7 @@ mv30_decoder_select="aandcttables blockdsp" mvha_decoder_deps="zlib" mvha_decoder_select="llviddsp" mwsc_decoder_deps="zlib" +mxf_encoder_select="pcm_rechunk_bsf" mxpeg_decoder_select="mjpeg_decoder" nellymoser_decoder_select="mdct sinewin" nellymoser_encoder_select="audio_frame_queue mdct sinewin" diff --git a/libavformat/Makefile b/libavformat/Makefile index d4bed3c113..56ca55fbd5 100644 --- a/libavformat/Makefile +++ b/libavformat/Makefile @@ -205,7 +205,7 @@ OBJS-$(CONFIG_GIF_DEMUXER) += gifdec.o OBJS-$(CONFIG_GSM_DEMUXER) += gsmdec.o OBJS-$(CONFIG_GSM_MUXER) += rawenc.o OBJS-$(CONFIG_GXF_DEMUXER) += gxf.o -OBJS-$(CONFIG_GXF_MUXER) += gxfenc.o audiointerleave.o +OBJS-$(CONFIG_GXF_MUXER) += gxfenc.o retimeinterleave.o OBJS-$(CONFIG_G722_DEMUXER) += g722.o rawdec.o OBJS-$(CONFIG_G722_MUXER)+= rawenc.o OBJS-$(CONFIG_G723_1_DEMUXER)+= g723_1.o @@ -347,7 +347,7 @@ OBJS-$(CONFIG_MUSX_DEMUXER) += musx.o OBJS-$(CONFIG_MV_DEMUXER)+= mvdec.o OBJS-$(CONFIG_MVI_DEMUXER) += mvi.o OBJS-$(CONFIG_MXF_DEMUXER) += mxfdec.o mxf.o -OBJS-$(CONFIG_MXF_MUXER) += mxfenc.o mxf.o audiointerleave.o avc.o +OBJS-$(CONFIG_MXF_MUXER) += mxfenc.o mxf.o retimeinterleave.o avc.o OBJS-$(CONFIG_MXG_DEMUXER) += mxg.o OBJS-$(CONFIG_NC_DEMUXER)+= ncdec.o OBJS-$(CONFIG_NISTSPHERE_DEMUXER)+= nistspheredec.o pcm.o diff --git a/libavformat/gxfenc.c b/libavformat/gxfenc.c index e7536a6a7e..e95ae99cba 100644 --- a/libavformat/gxfenc.c +++ b/libavformat/gxfenc.c @@ -27,7 +27,7 @@ #include "avformat.h" #include "internal.h" #include "gxf.h" -#include "audiointerleave.h" +#include "retimeinterleave.h" #define GXF_AUDIO_PACKET_SIZE 65536 @@ -44,7 +44,7 @@ typedef struct GXFTimecode{ } GXFTimecode; typedef struct GXFStreamContext { -AudioInterleaveContext aic; +RetimeInterleaveContext aic; uint32_t track_type; uint32_t sample_size; uint32_t sample_rate; @@ -813,14 +813,12 @@ static int gxf_write_header(AVFormatContext *s) return -1; } } +ff_retime_interleave_init(&sc->aic, st->time_base); /* FIXME first 10 audio tracks are 0 to 9 next 22 are A to V */ sc->media_info = media_info<<8 | ('0'+tracks[media_info]++); sc->order = s->nb_streams - st->index; } -if (ff_audio_interleave_init(s, GXF_samples_per_frame, (AVRational){ 1, 48000 }) < 0) -return -1; - if (tcr && vsc) gxf_init_timecode(s, &gxf->tc, tcr->value, vsc->fields); @@ -877,8 +875,6 @@ static void gxf_deinit(AVFormatContext *s) { GXFContext *gxf = s->priv_data; -ff_audio_interleave_close(s); - av_freep(&gxf->flt_entries); av_freep(&gxf->map_offsets); } @@ -1016,8 +1012,22 @@ static int gxf_interleave_packet(AVFormatContext *s, AVPacket *out, AVPacket *pk { if (pkt && s->streams[pkt->stream_index]->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) pkt->duration = 2; // enforce 2 fields -return ff_audio_rechunk_interleave(s, out, pkt, flush, - ff_interleave_packet_per_dts, gxf_compare_field_nb); +return ff_retime_interleave(s, out, pkt, fl
Re: [FFmpeg-devel] [PATCH v2 6/6] avformat/audiointerleave: only keep the retime functionality of the audio interleaver
Andreas Rheinhardt: > Marton Balint: >> And rename it to retimeinterleave, use the pcm_rechunk bitstream filter for >> rechunking. >> >> By seperating the two functions we hopefully get cleaner code. >> >> Signed-off-by: Marton Balint >> --- >> configure | 2 + >> libavformat/Makefile | 4 +- >> libavformat/gxfenc.c | 29 >> libavformat/mux.c | 1 - >> libavformat/mxfenc.c | 32 ++ >> libavformat/retimeinterleave.c | 51 >> ++ >> .../{audiointerleave.h => retimeinterleave.h} | 31 ++--- >> libavformat/utils.c| 1 - >> 8 files changed, 111 insertions(+), 40 deletions(-) >> create mode 100644 libavformat/retimeinterleave.c >> rename libavformat/{audiointerleave.h => retimeinterleave.h} (57%) > > Why don't you delete audiointerleave.c? (I would have expected to see > more deletions than insertions.) > >> >> diff --git a/configure b/configure >> index 4f285f0074..f5a84c31bd 100755 >> --- a/configure >> +++ b/configure >> @@ -2722,6 +2722,7 @@ fraps_decoder_select="bswapdsp huffman" >> g2m_decoder_deps="zlib" >> g2m_decoder_select="blockdsp idctdsp jpegtables" >> g729_decoder_select="audiodsp" >> +gxf_encoder_select="pcm_rechunk_bsf" >> h261_decoder_select="mpegvideo" >> h261_encoder_select="mpegvideoenc" >> h263_decoder_select="h263_parser h263dsp mpegvideo qpeldsp" >> @@ -2794,6 +2795,7 @@ mv30_decoder_select="aandcttables blockdsp" >> mvha_decoder_deps="zlib" >> mvha_decoder_select="llviddsp" >> mwsc_decoder_deps="zlib" >> +mxf_encoder_select="pcm_rechunk_bsf" >> mxpeg_decoder_select="mjpeg_decoder" >> nellymoser_decoder_select="mdct sinewin" >> nellymoser_encoder_select="audio_frame_queue mdct sinewin" >> diff --git a/libavformat/Makefile b/libavformat/Makefile >> index d4bed3c113..56ca55fbd5 100644 >> --- a/libavformat/Makefile >> +++ b/libavformat/Makefile >> @@ -205,7 +205,7 @@ OBJS-$(CONFIG_GIF_DEMUXER) += gifdec.o >> OBJS-$(CONFIG_GSM_DEMUXER) += gsmdec.o >> OBJS-$(CONFIG_GSM_MUXER) += rawenc.o >> OBJS-$(CONFIG_GXF_DEMUXER) += gxf.o >> -OBJS-$(CONFIG_GXF_MUXER) += gxfenc.o audiointerleave.o >> +OBJS-$(CONFIG_GXF_MUXER) += gxfenc.o retimeinterleave.o >> OBJS-$(CONFIG_G722_DEMUXER) += g722.o rawdec.o >> OBJS-$(CONFIG_G722_MUXER)+= rawenc.o >> OBJS-$(CONFIG_G723_1_DEMUXER)+= g723_1.o >> @@ -347,7 +347,7 @@ OBJS-$(CONFIG_MUSX_DEMUXER) += musx.o >> OBJS-$(CONFIG_MV_DEMUXER)+= mvdec.o >> OBJS-$(CONFIG_MVI_DEMUXER) += mvi.o >> OBJS-$(CONFIG_MXF_DEMUXER) += mxfdec.o mxf.o >> -OBJS-$(CONFIG_MXF_MUXER) += mxfenc.o mxf.o >> audiointerleave.o avc.o >> +OBJS-$(CONFIG_MXF_MUXER) += mxfenc.o mxf.o >> retimeinterleave.o avc.o >> OBJS-$(CONFIG_MXG_DEMUXER) += mxg.o >> OBJS-$(CONFIG_NC_DEMUXER)+= ncdec.o >> OBJS-$(CONFIG_NISTSPHERE_DEMUXER)+= nistspheredec.o pcm.o >> diff --git a/libavformat/gxfenc.c b/libavformat/gxfenc.c >> index e7536a6a7e..e95ae99cba 100644 >> --- a/libavformat/gxfenc.c >> +++ b/libavformat/gxfenc.c >> @@ -27,7 +27,7 @@ >> #include "avformat.h" >> #include "internal.h" >> #include "gxf.h" >> -#include "audiointerleave.h" >> +#include "retimeinterleave.h" >> >> #define GXF_AUDIO_PACKET_SIZE 65536 >> >> @@ -44,7 +44,7 @@ typedef struct GXFTimecode{ >> } GXFTimecode; >> >> typedef struct GXFStreamContext { >> -AudioInterleaveContext aic; >> +RetimeInterleaveContext aic; >> uint32_t track_type; >> uint32_t sample_size; >> uint32_t sample_rate; >> @@ -813,14 +813,12 @@ static int gxf_write_header(AVFormatContext *s) >> return -1; >> } >> } >> +ff_retime_interleave_init(&sc->aic, st->time_base); >> /* FIXME first 10 audio tracks are 0 to 9 next 22 are A to V */ >> sc->media_info = media_info<<8 | ('0'+tracks[media_info]++); >> sc->order = s->nb_streams - st->index; >> } >> >> -if (ff_audio_interleave_init(s, GXF_samples_per_frame, (AVRational){ 1, >> 48000 }) < 0) >> -return -1; >> - >> if (tcr && vsc) >> gxf_init_timecode(s, &gxf->tc, tcr->value, vsc->fields); >> >> @@ -877,8 +875,6 @@ static void gxf_deinit(AVFormatContext *s) >> { >> GXFContext *gxf = s->priv_data; >> >> -ff_audio_interleave_close(s); >> - >> av_freep(&gxf->flt_entries); >> av_freep(&gxf->map_offsets); >> } >> @@ -1016,8 +1012,22 @@ static int gxf_interleave_packet(AVFormatContext *s, >> AVPacket *out, AVPacket *pk >> { >> if (pkt && s->streams[pkt->stream_index]->codecpar->codec_type == >> AVMEDIA_TYPE_V
Re: [FFmpeg-devel] [PATCH v2 6/6] avformat/audiointerleave: only keep the retime functionality of the audio interleaver
Marton Balint: > And rename it to retimeinterleave, use the pcm_rechunk bitstream filter for > rechunking. > > By seperating the two functions we hopefully get cleaner code. > > Signed-off-by: Marton Balint > --- > configure | 2 + > libavformat/Makefile | 4 +- > libavformat/gxfenc.c | 29 > libavformat/mux.c | 1 - > libavformat/mxfenc.c | 32 ++ > libavformat/retimeinterleave.c | 51 > ++ > .../{audiointerleave.h => retimeinterleave.h} | 31 ++--- > libavformat/utils.c| 1 - > 8 files changed, 111 insertions(+), 40 deletions(-) > create mode 100644 libavformat/retimeinterleave.c > rename libavformat/{audiointerleave.h => retimeinterleave.h} (57%) Why don't you delete audiointerleave.c? (I would have expected to see more deletions than insertions.) > > diff --git a/configure b/configure > index 4f285f0074..f5a84c31bd 100755 > --- a/configure > +++ b/configure > @@ -2722,6 +2722,7 @@ fraps_decoder_select="bswapdsp huffman" > g2m_decoder_deps="zlib" > g2m_decoder_select="blockdsp idctdsp jpegtables" > g729_decoder_select="audiodsp" > +gxf_encoder_select="pcm_rechunk_bsf" > h261_decoder_select="mpegvideo" > h261_encoder_select="mpegvideoenc" > h263_decoder_select="h263_parser h263dsp mpegvideo qpeldsp" > @@ -2794,6 +2795,7 @@ mv30_decoder_select="aandcttables blockdsp" > mvha_decoder_deps="zlib" > mvha_decoder_select="llviddsp" > mwsc_decoder_deps="zlib" > +mxf_encoder_select="pcm_rechunk_bsf" > mxpeg_decoder_select="mjpeg_decoder" > nellymoser_decoder_select="mdct sinewin" > nellymoser_encoder_select="audio_frame_queue mdct sinewin" > diff --git a/libavformat/Makefile b/libavformat/Makefile > index d4bed3c113..56ca55fbd5 100644 > --- a/libavformat/Makefile > +++ b/libavformat/Makefile > @@ -205,7 +205,7 @@ OBJS-$(CONFIG_GIF_DEMUXER) += gifdec.o > OBJS-$(CONFIG_GSM_DEMUXER) += gsmdec.o > OBJS-$(CONFIG_GSM_MUXER) += rawenc.o > OBJS-$(CONFIG_GXF_DEMUXER) += gxf.o > -OBJS-$(CONFIG_GXF_MUXER) += gxfenc.o audiointerleave.o > +OBJS-$(CONFIG_GXF_MUXER) += gxfenc.o retimeinterleave.o > OBJS-$(CONFIG_G722_DEMUXER) += g722.o rawdec.o > OBJS-$(CONFIG_G722_MUXER)+= rawenc.o > OBJS-$(CONFIG_G723_1_DEMUXER)+= g723_1.o > @@ -347,7 +347,7 @@ OBJS-$(CONFIG_MUSX_DEMUXER) += musx.o > OBJS-$(CONFIG_MV_DEMUXER)+= mvdec.o > OBJS-$(CONFIG_MVI_DEMUXER) += mvi.o > OBJS-$(CONFIG_MXF_DEMUXER) += mxfdec.o mxf.o > -OBJS-$(CONFIG_MXF_MUXER) += mxfenc.o mxf.o audiointerleave.o > avc.o > +OBJS-$(CONFIG_MXF_MUXER) += mxfenc.o mxf.o > retimeinterleave.o avc.o > OBJS-$(CONFIG_MXG_DEMUXER) += mxg.o > OBJS-$(CONFIG_NC_DEMUXER)+= ncdec.o > OBJS-$(CONFIG_NISTSPHERE_DEMUXER)+= nistspheredec.o pcm.o > diff --git a/libavformat/gxfenc.c b/libavformat/gxfenc.c > index e7536a6a7e..e95ae99cba 100644 > --- a/libavformat/gxfenc.c > +++ b/libavformat/gxfenc.c > @@ -27,7 +27,7 @@ > #include "avformat.h" > #include "internal.h" > #include "gxf.h" > -#include "audiointerleave.h" > +#include "retimeinterleave.h" > > #define GXF_AUDIO_PACKET_SIZE 65536 > > @@ -44,7 +44,7 @@ typedef struct GXFTimecode{ > } GXFTimecode; > > typedef struct GXFStreamContext { > -AudioInterleaveContext aic; > +RetimeInterleaveContext aic; > uint32_t track_type; > uint32_t sample_size; > uint32_t sample_rate; > @@ -813,14 +813,12 @@ static int gxf_write_header(AVFormatContext *s) > return -1; > } > } > +ff_retime_interleave_init(&sc->aic, st->time_base); > /* FIXME first 10 audio tracks are 0 to 9 next 22 are A to V */ > sc->media_info = media_info<<8 | ('0'+tracks[media_info]++); > sc->order = s->nb_streams - st->index; > } > > -if (ff_audio_interleave_init(s, GXF_samples_per_frame, (AVRational){ 1, > 48000 }) < 0) > -return -1; > - > if (tcr && vsc) > gxf_init_timecode(s, &gxf->tc, tcr->value, vsc->fields); > > @@ -877,8 +875,6 @@ static void gxf_deinit(AVFormatContext *s) > { > GXFContext *gxf = s->priv_data; > > -ff_audio_interleave_close(s); > - > av_freep(&gxf->flt_entries); > av_freep(&gxf->map_offsets); > } > @@ -1016,8 +1012,22 @@ static int gxf_interleave_packet(AVFormatContext *s, > AVPacket *out, AVPacket *pk > { > if (pkt && s->streams[pkt->stream_index]->codecpar->codec_type == > AVMEDIA_TYPE_VIDEO) > pkt->duration = 2; // enforce 2 fields > -return ff_audio_rechunk_interleave(s, out, pkt, flush, > -