Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
transcoding: added patch from lekma to do proper pixel format support…
… for nvenc and intel's qsv
  • Loading branch information
perexg committed Nov 4, 2015
1 parent 57329de commit 0785258
Showing 1 changed file with 16 additions and 3 deletions.
19 changes: 16 additions & 3 deletions src/plumbing/transcoding.c
Expand Up @@ -1250,7 +1250,11 @@ transcoder_stream_video(transcoder_t *t, transcoder_stream_t *ts, th_pkt_t *pkt)

switch (ts->ts_type) {
case SCT_MPEG2VIDEO:
octx->pix_fmt = AV_PIX_FMT_YUV420P;
if (!strcmp(ocodec->name, "nvenc") || !strcmp(ocodec->name, "mpeg2_qsv"))
octx->pix_fmt = AV_PIX_FMT_NV12;
else
octx->pix_fmt = AV_PIX_FMT_YUV420P;

octx->flags |= CODEC_FLAG_GLOBAL_HEADER;

if (t->t_props.tp_vbitrate < 64) {
Expand Down Expand Up @@ -1297,11 +1301,20 @@ transcoder_stream_video(transcoder_t *t, transcoder_stream_t *ts, th_pkt_t *pkt)
break;

case SCT_H264:
octx->pix_fmt = AV_PIX_FMT_YUV420P;
if (!strcmp(ocodec->name, "nvenc") || !strcmp(ocodec->name, "h264_qsv"))
octx->pix_fmt = AV_PIX_FMT_NV12;
else
octx->pix_fmt = AV_PIX_FMT_YUV420P;

octx->flags |= CODEC_FLAG_GLOBAL_HEADER;

// Default = "medium". We gain more encoding speed compared to the loss of quality when lowering it _slightly_.
av_dict_set(&opts, "preset", "faster", 0);
if (!strcmp(ocodec->name, "nvenc"))

This comment has been minimized.

Copy link
@Jalle19

Jalle19 Nov 5, 2015

Contributor

Should probably be strcmp() == 0, same below.

This comment has been minimized.

Copy link
@perexg

perexg Nov 5, 2015

Author Contributor

It's similar condition, isn't ?

This comment has been minimized.

Copy link
@Jalle19

Jalle19 Nov 5, 2015

Contributor

Can't remember my rationale anymore but all examples on the internet explicitlt use == 0.

av_dict_set(&opts, "preset", "hq", 0);
else if (!strcmp(ocodec->name, "h264_qsv"))
av_dict_set(&opts, "preset", "medium", 0);
else
av_dict_set(&opts, "preset", "faster", 0);

// All modern devices should support "high" profile
av_dict_set(&opts, "profile", "high", 0);
Expand Down

2 comments on commit 0785258

@lekma
Copy link
Contributor

@lekma lekma commented on 0785258 Nov 9, 2015

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I never submited this! did I?

@perexg
Copy link
Contributor Author

@perexg perexg commented on 0785258 Nov 9, 2015

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@lekma: oops.. sorry - lsd wrote it. I'm lost between issue tracker / IRC nicknames.

Please sign in to comment.