diff mbox series

[FFmpeg-devel,3/4] configure: Add msmpeg4(dec|enc) subsystems

Message ID DB6PR0101MB2214A67137AFF9847951FEAE8F9B9@DB6PR0101MB2214.eurprd01.prod.exchangelabs.com
State Accepted
Headers show
Series [FFmpeg-devel,1/4] avcodec/intrax8: Remove unused IDCTDSPContext | expand

Checks

Context Check Description
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished

Commit Message

Andreas Rheinhardt July 31, 2022, 9:41 a.m. UTC
The msmpeg4 decoders/encoders share a common set of prerequisites,
ergo it makes sense to use common subsystems for them. This also
allows to remove the CONFIG_MSMPEG4_DECODER/ENCODER ad-hoc defines
(which violated the CONFIG_ namespace).

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
---
 configure                  | 24 ++++++++++++++----------
 libavcodec/Makefile        | 16 ++++------------
 libavcodec/h263dec.c       |  4 ++--
 libavcodec/mpegvideo_enc.c |  8 ++++----
 libavcodec/msmpeg4dec.h    |  8 --------
 libavcodec/msmpeg4enc.h    |  6 ------
 libavformat/protocols.c    |  1 +
 7 files changed, 25 insertions(+), 42 deletions(-)

Comments

Martin Storsjö July 31, 2022, 10:06 a.m. UTC | #1
On Sun, 31 Jul 2022, Andreas Rheinhardt wrote:

> The msmpeg4 decoders/encoders share a common set of prerequisites,
> ergo it makes sense to use common subsystems for them. This also
> allows to remove the CONFIG_MSMPEG4_DECODER/ENCODER ad-hoc defines
> (which violated the CONFIG_ namespace).
>
> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
> ---
> configure                  | 24 ++++++++++++++----------
> libavcodec/Makefile        | 16 ++++------------
> libavcodec/h263dec.c       |  4 ++--
> libavcodec/mpegvideo_enc.c |  8 ++++----
> libavcodec/msmpeg4dec.h    |  8 --------
> libavcodec/msmpeg4enc.h    |  6 ------
> libavformat/protocols.c    |  1 +
> 7 files changed, 25 insertions(+), 42 deletions(-)

> diff --git a/libavcodec/Makefile b/libavcodec/Makefile
> index a6311411d3..33b913c4fc 100644
> --- a/libavcodec/Makefile
> +++ b/libavcodec/Makefile
> @@ -141,6 +141,8 @@ OBJS-$(CONFIG_MPEGVIDEODEC)            += mpegvideo_dec.o mpegutils.o
> OBJS-$(CONFIG_MPEGVIDEOENC)            += mpegvideo_enc.o mpeg12data.o  \
>                                           motion_est.o ratecontrol.o    \
>                                           mpegvideoencdsp.o
> +OBJS-$(CONFIG_MSMPEG4DEC)              += msmpeg4dec.o msmpeg4.o msmpeg4data.o
> +OBJS-$(CONFIG_MSMPEG4DEC)              += msmpeg4enc.o msmpeg4.o msmpeg4data.o

Typo on the second line, should be CONFIG_MSMPEG4ENC?

// Martin
Andreas Rheinhardt July 31, 2022, 6:33 p.m. UTC | #2
Martin Storsjö:
> On Sun, 31 Jul 2022, Andreas Rheinhardt wrote:
> 
>> The msmpeg4 decoders/encoders share a common set of prerequisites,
>> ergo it makes sense to use common subsystems for them. This also
>> allows to remove the CONFIG_MSMPEG4_DECODER/ENCODER ad-hoc defines
>> (which violated the CONFIG_ namespace).
>>
>> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
>> ---
>> configure                  | 24 ++++++++++++++----------
>> libavcodec/Makefile        | 16 ++++------------
>> libavcodec/h263dec.c       |  4 ++--
>> libavcodec/mpegvideo_enc.c |  8 ++++----
>> libavcodec/msmpeg4dec.h    |  8 --------
>> libavcodec/msmpeg4enc.h    |  6 ------
>> libavformat/protocols.c    |  1 +
>> 7 files changed, 25 insertions(+), 42 deletions(-)
> 
>> diff --git a/libavcodec/Makefile b/libavcodec/Makefile
>> index a6311411d3..33b913c4fc 100644
>> --- a/libavcodec/Makefile
>> +++ b/libavcodec/Makefile
>> @@ -141,6 +141,8 @@ OBJS-$(CONFIG_MPEGVIDEODEC)            +=
>> mpegvideo_dec.o mpegutils.o
>> OBJS-$(CONFIG_MPEGVIDEOENC)            += mpegvideo_enc.o mpeg12data.o  \
>>                                           motion_est.o ratecontrol.o    \
>>                                           mpegvideoencdsp.o
>> +OBJS-$(CONFIG_MSMPEG4DEC)              += msmpeg4dec.o msmpeg4.o
>> msmpeg4data.o
>> +OBJS-$(CONFIG_MSMPEG4DEC)              += msmpeg4enc.o msmpeg4.o
>> msmpeg4data.o
> 
> Typo on the second line, should be CONFIG_MSMPEG4ENC?
> 
> // Martin
> 

Thanks for spotting this. Fixed it locally.
(Using static builds can hide compilation issues (namely if one adds an
unnecessary OBJS if said object's dependencies are not met: in this case
the unnecessary object file will just be ignored) and therefore I tested
this with a shared build by compiling libavcodec.so. Which worked,
because libavcodec.so just treated the unknown encoder as external. I
should have (and now have) compiled the whole of ffmpeg. Sorry.)

- Andreas
diff mbox series

Patch

diff --git a/configure b/configure
index ff075fb950..159d3574ef 100755
--- a/configure
+++ b/configure
@@ -2490,6 +2490,8 @@  CONFIG_EXTRA="
     mpegvideo
     mpegvideodec
     mpegvideoenc
+    msmpeg4dec
+    msmpeg4enc
     mss34dsp
     pixblockdsp
     qpeldsp
@@ -2744,6 +2746,8 @@  mpegaudiodsp_select="dct"
 mpegvideo_select="blockdsp h264chroma hpeldsp idctdsp videodsp"
 mpegvideodec_select="mpegvideo mpeg_er"
 mpegvideoenc_select="aandcttables me_cmp mpegvideo pixblockdsp qpeldsp"
+msmpeg4dec_select="h263_decoder"
+msmpeg4enc_select="h263_encoder"
 vc1dsp_select="h264chroma qpeldsp startcode"
 rdft_select="fft"
 
@@ -2893,11 +2897,11 @@  mpeg4_decoder_select="h263_decoder mpeg4video_parser"
 mpeg4_encoder_select="h263_encoder"
 msa1_decoder_select="mss34dsp"
 mscc_decoder_select="inflate_wrapper"
-msmpeg4v1_decoder_select="h263_decoder"
-msmpeg4v2_decoder_select="h263_decoder"
-msmpeg4v2_encoder_select="h263_encoder"
-msmpeg4v3_decoder_select="h263_decoder"
-msmpeg4v3_encoder_select="h263_encoder"
+msmpeg4v1_decoder_select="msmpeg4dec"
+msmpeg4v2_decoder_select="msmpeg4dec"
+msmpeg4v2_encoder_select="msmpeg4enc"
+msmpeg4v3_decoder_select="msmpeg4dec"
+msmpeg4v3_encoder_select="msmpeg4enc"
 mss2_decoder_select="mpegvideodec qpeldsp vc1_decoder"
 mts2_decoder_select="jpegtables mss34dsp"
 mv30_decoder_select="aandcttables blockdsp"
@@ -2968,7 +2972,7 @@  utvideo_encoder_select="bswapdsp huffman llvidencdsp"
 vble_decoder_select="llviddsp"
 vbn_decoder_select="texturedsp"
 vbn_encoder_select="texturedspenc"
-vc1_decoder_select="blockdsp h263_decoder h264qpel intrax8 mpegvideodec vc1dsp"
+vc1_decoder_select="blockdsp h264qpel intrax8 mpegvideodec msmpeg4dec vc1dsp"
 vc1image_decoder_select="vc1_decoder"
 vorbis_decoder_select="mdct"
 vorbis_encoder_select="audio_frame_queue mdct"
@@ -2990,10 +2994,10 @@  wmav1_encoder_select="mdct sinewin wma_freqs"
 wmav2_decoder_select="mdct sinewin wma_freqs"
 wmav2_encoder_select="mdct sinewin wma_freqs"
 wmavoice_decoder_select="lsp rdft dct mdct sinewin"
-wmv1_decoder_select="h263_decoder"
-wmv1_encoder_select="h263_encoder"
-wmv2_decoder_select="blockdsp error_resilience h263_decoder idctdsp intrax8 videodsp wmv2dsp"
-wmv2_encoder_select="h263_encoder wmv2dsp"
+wmv1_decoder_select="msmpeg4dec"
+wmv1_encoder_select="msmpeg4enc"
+wmv2_decoder_select="blockdsp error_resilience idctdsp intrax8 msmpeg4dec videodsp wmv2dsp"
+wmv2_encoder_select="msmpeg4enc wmv2dsp"
 wmv3_decoder_select="vc1_decoder"
 wmv3image_decoder_select="wmv3_decoder"
 xma1_decoder_select="wmapro_decoder"
diff --git a/libavcodec/Makefile b/libavcodec/Makefile
index a6311411d3..33b913c4fc 100644
--- a/libavcodec/Makefile
+++ b/libavcodec/Makefile
@@ -141,6 +141,8 @@  OBJS-$(CONFIG_MPEGVIDEODEC)            += mpegvideo_dec.o mpegutils.o
 OBJS-$(CONFIG_MPEGVIDEOENC)            += mpegvideo_enc.o mpeg12data.o  \
                                           motion_est.o ratecontrol.o    \
                                           mpegvideoencdsp.o
+OBJS-$(CONFIG_MSMPEG4DEC)              += msmpeg4dec.o msmpeg4.o msmpeg4data.o
+OBJS-$(CONFIG_MSMPEG4DEC)              += msmpeg4enc.o msmpeg4.o msmpeg4data.o
 OBJS-$(CONFIG_MSS34DSP)                += mss34dsp.o
 OBJS-$(CONFIG_PIXBLOCKDSP)             += pixblockdsp.o
 OBJS-$(CONFIG_QPELDSP)                 += qpeldsp.o
@@ -527,11 +529,6 @@  OBJS-$(CONFIG_MPEG4_V4L2M2M_ENCODER)   += v4l2_m2m_enc.o
 OBJS-$(CONFIG_MPL2_DECODER)            += mpl2dec.o ass.o
 OBJS-$(CONFIG_MSA1_DECODER)            += mss3.o
 OBJS-$(CONFIG_MSCC_DECODER)            += mscc.o
-OBJS-$(CONFIG_MSMPEG4V1_DECODER)       += msmpeg4dec.o msmpeg4.o msmpeg4data.o
-OBJS-$(CONFIG_MSMPEG4V2_DECODER)       += msmpeg4dec.o msmpeg4.o msmpeg4data.o
-OBJS-$(CONFIG_MSMPEG4V2_ENCODER)       += msmpeg4enc.o msmpeg4.o msmpeg4data.o
-OBJS-$(CONFIG_MSMPEG4V3_DECODER)       += msmpeg4dec.o msmpeg4.o msmpeg4data.o
-OBJS-$(CONFIG_MSMPEG4V3_ENCODER)       += msmpeg4enc.o msmpeg4.o msmpeg4data.o
 OBJS-$(CONFIG_MSNSIREN_DECODER)        += siren.o
 OBJS-$(CONFIG_MSP2_DECODER)            += msp2dec.o
 OBJS-$(CONFIG_MSRLE_DECODER)           += msrle.o msrledec.o
@@ -722,7 +719,6 @@  OBJS-$(CONFIG_VBN_ENCODER)             += vbnenc.o
 OBJS-$(CONFIG_VBLE_DECODER)            += vble.o
 OBJS-$(CONFIG_VC1_DECODER)             += vc1dec.o vc1_block.o vc1_loopfilter.o \
                                           vc1_mc.o vc1_pred.o vc1.o vc1data.o \
-                                          msmpeg4dec.o msmpeg4.o msmpeg4data.o \
                                           wmv2data.o
 OBJS-$(CONFIG_VC1_CUVID_DECODER)       += cuviddec.o
 OBJS-$(CONFIG_VC1_MMAL_DECODER)        += mmaldec.o
@@ -776,12 +772,8 @@  OBJS-$(CONFIG_WMAV2_ENCODER)           += wmaenc.o wma.o wma_common.o aactab.o
 OBJS-$(CONFIG_WMAVOICE_DECODER)        += wmavoice.o \
                                           celp_filters.o \
                                           acelp_vectors.o acelp_filters.o
-OBJS-$(CONFIG_WMV1_DECODER)            += msmpeg4dec.o msmpeg4.o msmpeg4data.o
-OBJS-$(CONFIG_WMV1_ENCODER)            += msmpeg4enc.o msmpeg4.o msmpeg4data.o
-OBJS-$(CONFIG_WMV2_DECODER)            += wmv2dec.o wmv2.o wmv2data.o \
-                                          msmpeg4dec.o msmpeg4.o msmpeg4data.o
-OBJS-$(CONFIG_WMV2_ENCODER)            += wmv2enc.o wmv2.o wmv2data.o \
-                                          msmpeg4.o msmpeg4enc.o msmpeg4data.o
+OBJS-$(CONFIG_WMV2_DECODER)            += wmv2dec.o wmv2.o wmv2data.o
+OBJS-$(CONFIG_WMV2_ENCODER)            += wmv2enc.o wmv2.o wmv2data.o
 OBJS-$(CONFIG_WNV1_DECODER)            += wnv1.o
 OBJS-$(CONFIG_WRAPPED_AVFRAME_DECODER) += wrapped_avframe.o
 OBJS-$(CONFIG_WRAPPED_AVFRAME_ENCODER) += wrapped_avframe.o
diff --git a/libavcodec/h263dec.c b/libavcodec/h263dec.c
index b4f9fa5022..8db0eccd89 100644
--- a/libavcodec/h263dec.c
+++ b/libavcodec/h263dec.c
@@ -502,7 +502,7 @@  retry:
     /* let's go :-) */
     if (CONFIG_WMV2_DECODER && s->msmpeg4_version == 5) {
         ret = ff_wmv2_decode_picture_header(s);
-    } else if (CONFIG_MSMPEG4_DECODER && s->msmpeg4_version) {
+    } else if (CONFIG_MSMPEG4DEC && s->msmpeg4_version) {
         ret = ff_msmpeg4_decode_picture_header(s);
     } else if (CONFIG_MPEG4_DECODER && avctx->codec_id == AV_CODEC_ID_MPEG4) {
         if (s->avctx->extradata_size && s->picture_number == 0) {
@@ -666,7 +666,7 @@  retry:
 
     if (s->msmpeg4_version && s->msmpeg4_version < 4 &&
         s->pict_type == AV_PICTURE_TYPE_I)
-        if (!CONFIG_MSMPEG4_DECODER ||
+        if (!CONFIG_MSMPEG4DEC ||
             ff_msmpeg4_decode_ext_header(s, buf_size) < 0)
             s->er.error_status_table[s->mb_num - 1] = ER_MB_ERROR;
 
diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c
index 86a9b55078..bc41019408 100644
--- a/libavcodec/mpegvideo_enc.c
+++ b/libavcodec/mpegvideo_enc.c
@@ -852,7 +852,7 @@  av_cold int ff_mpv_encode_init(AVCodecContext *avctx)
         ff_mpeg1_encode_init(s);
     } else if (CONFIG_H263_ENCODER && s->out_format == FMT_H263) {
         ff_h263_encode_init(s);
-        if (CONFIG_MSMPEG4_ENCODER && s->msmpeg4_version)
+        if (CONFIG_MSMPEG4ENC && s->msmpeg4_version)
             ff_msmpeg4_encode_init(s);
     }
 
@@ -2372,7 +2372,7 @@  static av_always_inline void encode_mb_internal(MpegEncContext *s,
     case AV_CODEC_ID_MSMPEG4V2:
     case AV_CODEC_ID_MSMPEG4V3:
     case AV_CODEC_ID_WMV1:
-        if (CONFIG_MSMPEG4_ENCODER)
+        if (CONFIG_MSMPEG4ENC)
             ff_msmpeg4_encode_mb(s, s->block, motion_x, motion_y);
         break;
     case AV_CODEC_ID_WMV2:
@@ -3381,7 +3381,7 @@  static int encode_thread(AVCodecContext *c, void *arg){
     }
 
     //not beautiful here but we must write it before flushing so it has to be here
-    if (CONFIG_MSMPEG4_ENCODER && s->msmpeg4_version && s->msmpeg4_version<4 && s->pict_type == AV_PICTURE_TYPE_I)
+    if (CONFIG_MSMPEG4ENC && s->msmpeg4_version && s->msmpeg4_version<4 && s->pict_type == AV_PICTURE_TYPE_I)
         ff_msmpeg4_encode_ext_header(s);
 
     write_slice_end(s);
@@ -3716,7 +3716,7 @@  static int encode_picture(MpegEncContext *s, int picture_number)
     case FMT_H263:
         if (CONFIG_WMV2_ENCODER && s->codec_id == AV_CODEC_ID_WMV2)
             ff_wmv2_encode_picture_header(s, picture_number);
-        else if (CONFIG_MSMPEG4_ENCODER && s->msmpeg4_version)
+        else if (CONFIG_MSMPEG4ENC && s->msmpeg4_version)
             ff_msmpeg4_encode_picture_header(s, picture_number);
         else if (CONFIG_MPEG4_ENCODER && s->h263_pred) {
             ret = ff_mpeg4_encode_picture_header(s, picture_number);
diff --git a/libavcodec/msmpeg4dec.h b/libavcodec/msmpeg4dec.h
index af2591caf5..19b5c12c6c 100644
--- a/libavcodec/msmpeg4dec.h
+++ b/libavcodec/msmpeg4dec.h
@@ -22,7 +22,6 @@ 
 #ifndef AVCODEC_MSMPEG4DEC_H
 #define AVCODEC_MSMPEG4DEC_H
 
-#include "config.h"
 #include "avcodec.h"
 #include "mpegvideo.h"
 
@@ -40,11 +39,4 @@  void ff_msmpeg4_decode_motion(MpegEncContext * s, int *mx_ptr, int *my_ptr);
 int ff_msmpeg4_decode_block(MpegEncContext * s, int16_t * block,
                             int n, int coded, const uint8_t *scan_table);
 
-#define CONFIG_MSMPEG4_DECODER (CONFIG_MSMPEG4V1_DECODER || \
-                                CONFIG_MSMPEG4V2_DECODER || \
-                                CONFIG_MSMPEG4V3_DECODER || \
-                                CONFIG_WMV1_DECODER      || \
-                                CONFIG_WMV2_DECODER      || \
-                                CONFIG_VC1_DECODER)
-
 #endif
diff --git a/libavcodec/msmpeg4enc.h b/libavcodec/msmpeg4enc.h
index 98044913b1..602e60112d 100644
--- a/libavcodec/msmpeg4enc.h
+++ b/libavcodec/msmpeg4enc.h
@@ -22,7 +22,6 @@ 
 #ifndef AVCODEC_MSMPEG4ENC_H
 #define AVCODEC_MSMPEG4ENC_H
 
-#include "config.h"
 #include "mpegvideo.h"
 #include "put_bits.h"
 #include "rl.h"
@@ -45,9 +44,4 @@  void ff_msmpeg4_encode_motion(MpegEncContext * s, int mx, int my);
 
 void ff_msmpeg4_code012(PutBitContext *pb, int n);
 
-#define CONFIG_MSMPEG4_ENCODER (CONFIG_MSMPEG4V2_ENCODER || \
-                                CONFIG_MSMPEG4V3_ENCODER || \
-                                CONFIG_WMV1_ENCODER      || \
-                                CONFIG_WMV2_ENCODER)
-
 #endif
diff --git a/libavformat/protocols.c b/libavformat/protocols.c
index 6ee62a598a..8b7d1b940f 100644
--- a/libavformat/protocols.c
+++ b/libavformat/protocols.c
@@ -17,6 +17,7 @@ 
  */
 
 #include "libavutil/avstring.h"
+#include "libavutil/log.h"
 #include "libavutil/mem.h"
 
 #include "url.h"