mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-02-27 01:01:07 +00:00
avcodec/libx264: Use av_pix_fmt_count_planes() where appropriate
This also fixes the number of planes for the NV formats (this seems to not have caused any problems). Reviewed-by: Anton Khirnov <anton@khirnov.net> Reviewed-by: Jan Ekström <jeebjp@gmail.com> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
This commit is contained in:
parent
19e35edaf1
commit
a6e9d01f88
@ -189,28 +189,6 @@ static int encode_nals(AVCodecContext *ctx, AVPacket *pkt,
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int avfmt2_num_planes(int avfmt)
|
|
||||||
{
|
|
||||||
switch (avfmt) {
|
|
||||||
case AV_PIX_FMT_YUV420P:
|
|
||||||
case AV_PIX_FMT_YUVJ420P:
|
|
||||||
case AV_PIX_FMT_YUV420P9:
|
|
||||||
case AV_PIX_FMT_YUV420P10:
|
|
||||||
case AV_PIX_FMT_YUV444P:
|
|
||||||
return 3;
|
|
||||||
|
|
||||||
case AV_PIX_FMT_BGR0:
|
|
||||||
case AV_PIX_FMT_BGR24:
|
|
||||||
case AV_PIX_FMT_RGB24:
|
|
||||||
case AV_PIX_FMT_GRAY8:
|
|
||||||
case AV_PIX_FMT_GRAY10:
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
default:
|
|
||||||
return 3;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void reconfig_encoder(AVCodecContext *ctx, const AVFrame *frame)
|
static void reconfig_encoder(AVCodecContext *ctx, const AVFrame *frame)
|
||||||
{
|
{
|
||||||
X264Context *x4 = ctx->priv_data;
|
X264Context *x4 = ctx->priv_data;
|
||||||
@ -440,7 +418,7 @@ static int setup_frame(AVCodecContext *ctx, const AVFrame *frame,
|
|||||||
#endif
|
#endif
|
||||||
if (bit_depth > 8)
|
if (bit_depth > 8)
|
||||||
pic->img.i_csp |= X264_CSP_HIGH_DEPTH;
|
pic->img.i_csp |= X264_CSP_HIGH_DEPTH;
|
||||||
pic->img.i_plane = avfmt2_num_planes(ctx->pix_fmt);
|
pic->img.i_plane = av_pix_fmt_count_planes(ctx->pix_fmt);
|
||||||
|
|
||||||
for (int i = 0; i < pic->img.i_plane; i++) {
|
for (int i = 0; i < pic->img.i_plane; i++) {
|
||||||
pic->img.plane[i] = frame->data[i];
|
pic->img.plane[i] = frame->data[i];
|
||||||
|
Loading…
Reference in New Issue
Block a user