|
|
|
@ -684,6 +684,7 @@ static int prores_encode_frame(AVCodecContext *avctx, AVPacket *pkt, |
|
|
|
|
int header_size = 148; |
|
|
|
|
uint8_t *buf; |
|
|
|
|
int pic_size, ret; |
|
|
|
|
uint8_t frame_flags; |
|
|
|
|
int frame_size = FFALIGN(avctx->width, 16) * FFALIGN(avctx->height, 16)*16 + 500 + AV_INPUT_BUFFER_MIN_SIZE; //FIXME choose tighter limit
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -705,11 +706,10 @@ static int prores_encode_frame(AVCodecContext *avctx, AVPacket *pkt, |
|
|
|
|
bytestream_put_buffer(&buf, ctx->vendor, 4); |
|
|
|
|
bytestream_put_be16(&buf, avctx->width); |
|
|
|
|
bytestream_put_be16(&buf, avctx->height); |
|
|
|
|
if (avctx->profile >= FF_PROFILE_PRORES_4444) { /* 4444 or 4444 Xq */ |
|
|
|
|
*buf++ = 0xC2; // 444, not interlaced
|
|
|
|
|
} else { |
|
|
|
|
*buf++ = 0x82; // 422, not interlaced
|
|
|
|
|
} |
|
|
|
|
frame_flags = 0x82; /* 422 not interlaced */ |
|
|
|
|
if (avctx->profile >= FF_PROFILE_PRORES_4444) /* 4444 or 4444 Xq */ |
|
|
|
|
frame_flags |= 0x40; /* 444 chroma */ |
|
|
|
|
*buf++ = frame_flags; |
|
|
|
|
*buf++ = 0; /* reserved */ |
|
|
|
|
/* only write color properties, if valid value. set to unspecified otherwise */ |
|
|
|
|
*buf++ = ff_int_from_list_or_default(avctx, "frame color primaries", pict->color_primaries, valid_primaries, 0); |
|
|
|
|