Re: [FFmpeg-devel] [PATCH v2 6/6] avformat/audiointerleave: only keep the retime functionality of the audio interleaver

2020-04-27 Thread Marton Balint



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

2020-04-25 Thread Andreas Rheinhardt
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

2020-04-25 Thread 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_VIDEO)
>  pkt->duration = 2; // enforce 2 fields
> -return ff_audio_rechunk_interleave(s, out, pkt, flush,
> -