static uint8_t mpeg1_index_run[2][64];
static int8_t mpeg1_max_level[2][64];
+#define A53_MAX_CC_COUNT 0x1f
+
static av_cold void init_uni_ac_vlc(RLTable *rl, uint8_t *uni_ac_vlc_len)
{
int i;
}
}
+ if (s->codec_id == AV_CODEC_ID_MPEG2VIDEO && s->a53_cc) {
+ side_data = av_frame_get_side_data(s->current_picture_ptr->f,
+ AV_FRAME_DATA_A53_CC);
+ if (side_data) {
+ if (side_data->size <= A53_MAX_CC_COUNT * 3 && side_data->size % 3 == 0) {
+ int i = 0;
+
+ put_header (s, USER_START_CODE);
+
+ put_bits(&s->pb, 8, 'G'); // user_identifier
+ put_bits(&s->pb, 8, 'A');
+ put_bits(&s->pb, 8, '9');
+ put_bits(&s->pb, 8, '4');
+ put_bits(&s->pb, 8, 3); // user_data_type_code
+ put_bits(&s->pb, 8,
+ (side_data->size / 3 & A53_MAX_CC_COUNT) | 0x40); // flags, cc_count
+ put_bits(&s->pb, 8, 0xff); // em_data
+
+ for (i = 0; i < side_data->size; i++)
+ put_bits(&s->pb, 8, side_data->data[i]);
+
+ put_bits(&s->pb, 8, 0xff); // marker_bits
+ } else {
+ av_log(s->avctx, AV_LOG_WARNING,
+ "Warning Closed Caption size (%d) can not exceed 93 bytes "
+ "and must be a multiple of 3\n", side_data->size);
+ }
+ }
+ }
+
s->mb_y = 0;
ff_mpeg1_encode_slice_header(s);
}
.pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV420P,
AV_PIX_FMT_NONE },
.capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_SLICE_THREADS,
+ .caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
.priv_class = &mpeg1_class,
};
AV_PIX_FMT_YUV422P,
AV_PIX_FMT_NONE },
.capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_SLICE_THREADS,
+ .caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
.priv_class = &mpeg2_class,
};