@@ -38,8 +38,9 @@
* DV codec.
*/
-#include "avcodec.h"
+#include "libavutil/pixfmt.h"
#include "dv.h"
+#include "dv_profile.h"
static inline void dv_calc_mb_coordinates(const AVDVProfile *d, int chan,
int seq, int slot, uint16_t *tbl)
@@ -184,13 +185,3 @@ int ff_dv_init_dynamic_tables(DVVideoContext *ctx, const AVDVProfile *d)
return 0;
}
-
-av_cold int ff_dvvideo_init(AVCodecContext *avctx)
-{
- DVVideoContext *s = avctx->priv_data;
-
- s->avctx = avctx;
- avctx->chroma_sample_location = AVCHROMA_LOC_TOPLEFT;
-
- return 0;
-}
@@ -97,8 +97,6 @@ enum dv_pack_type {
int ff_dv_init_dynamic_tables(DVVideoContext *s, const AVDVProfile *d);
-int ff_dvvideo_init(AVCodecContext *avctx);
-
static inline int dv_work_pool_size(const AVDVProfile *d)
{
int size = d->n_difchan * d->difseg_size * 27;
@@ -240,6 +240,9 @@ static av_cold int dvvideo_decode_init(AVCodecContext *avctx)
DVVideoContext *s = avctx->priv_data;
int i;
+ s->avctx = avctx;
+ avctx->chroma_sample_location = AVCHROMA_LOC_TOPLEFT;
+
ff_idctdsp_init(&s->idsp, avctx);
for (i = 0; i < 64; i++)
@@ -258,7 +261,7 @@ static av_cold int dvvideo_decode_init(AVCodecContext *avctx)
ff_thread_once(&init_static_once, dv_init_static);
- return ff_dvvideo_init(avctx);
+ return 0;
}
/* decode AC coefficients */
@@ -55,6 +55,8 @@ static av_cold int dvvideo_encode_init(AVCodecContext *avctx)
PixblockDSPContext pdsp;
int ret;
+ s->avctx = avctx;
+
s->sys = av_dv_codec_profile2(avctx->width, avctx->height, avctx->pix_fmt, avctx->time_base);
if (!s->sys) {
av_log(avctx, AV_LOG_ERROR, "Found no DV profile for %ix%i %s video. "
@@ -91,7 +93,7 @@ static av_cold int dvvideo_encode_init(AVCodecContext *avctx)
}
#endif
- return ff_dvvideo_init(avctx);
+ return 0;
}
/* bit budget for AC only in 5 MBs */
@@ -1,3 +1,3 @@
-3339def72599c79ad5860c6860cc3123 *tests/data/lavf/lavf.mxf_dv25
+59d632e097e6f45c28445b2ab862ffe8 *tests/data/lavf/lavf.mxf_dv25
3834413 tests/data/lavf/lavf.mxf_dv25
tests/data/lavf/lavf.mxf_dv25 CRC=0xbdaf7f52
The documentation specifies that it is set by the user for encoders. Given that ff_dvvideo_init() is so extremely simple, the fix consists of inlining the function into its two callers, with setting chroma_sample_location omitted in dvenc.c. This unfortunately leads to the color siting element written in the mxf_dv25 test being unknown. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> --- libavcodec/dv.c | 13 ++----------- libavcodec/dv.h | 2 -- libavcodec/dvdec.c | 5 ++++- libavcodec/dvenc.c | 4 +++- tests/ref/lavf/mxf_dv25 | 2 +- 5 files changed, 10 insertions(+), 16 deletions(-)