[FFmpeg-devel] [PATCH] avcodec/dnxhdenc: DNxHR 444 and HQX support

Mark Reid mindmark at gmail.com
Tue Mar 28 02:43:47 EEST 2017


On Mon, Mar 27, 2017 at 3:14 PM, Paul B Mahol <onemda at gmail.com> wrote:

> On 3/27/17, Paul B Mahol <onemda at gmail.com> wrote:
> > On 3/27/17, Mark Reid <mindmark at gmail.com> wrote:
> >> On Mon, Mar 27, 2017 at 11:08 AM, Paul B Mahol <onemda at gmail.com>
> wrote:
> >>
> >>> Signed-off-by: Paul B Mahol <onemda at gmail.com>
> >>> ---
> >>>  libavcodec/dnxhdenc.c | 227 ++++++++++++++++++++++++++++++
> >>> +++++---------------
> >>>  libavcodec/dnxhdenc.h |   6 +-
> >>>  2 files changed, 163 insertions(+), 70 deletions(-)
> >>>
> >
> > [...]
> >
> >>> +    case AV_PIX_FMT_YUV444P10:
> >>> +    case AV_PIX_FMT_GBRP10:
> >>> +        ctx->bit_depth = 10;
> >>>
> >>
> >> Am I missing something, I thought the dnxhr HQX and 444 profiles were
> >> 12bit?
> >> http://avid.force.com/pkb/articles/en_US/White_Paper/
> DNxHR-Codec-Bandwidth-Specifications
> >>
> >
> > They are both 10 and 12 bit.
> >
> >> I get a failed Assertion here,
> >>
> >> Assertion nbits < ctx->bit_depth + 4 failed at libavcodec/dnxhdenc.c:837
> >> when I try the following command
> >> ./ffmpeg_g -y -f rawvideo -video_size 2048x1556 -pixel_format yuv444p10
> >> -i
> >> /dev/urandom \
> >>     -loglevel debug \
> >>     -vframes 5 \
> >>     -profile:v "dnxhr_444" \
> >>     -vcodec dnxhd \
> >>     -pix_fmt yuv444p10 \
> >>     test.mov
> >>
> >
> > What could be cause of that? If I try to avoid that I get ratecontrol
> > error.
>
> Actually that command is invalid as it passes > (2^10 - 1) values to
> video frame.
> Use geq="lum=random(x)*1023:cb=random(y):cr=random(z)*1023" instead.
>

okay, well I tried instead
./ffmpeg_g -y -f lavfi -i
nullsrc=s=2048x1556,geq="lum=random(1)*1023:cb=random(1):cr=random(1)*1023"
\
    -vframes 5 \
    -profile:v "dnxhr_444" \
    -vcodec dnxhd \
    -pix_fmt yuv444p10 \
    test.mov

and now I get a different failed assertion:

Assertion block_w * sizeof(uint16_t) <= ((buf_linesize) >= 0 ?
(buf_linesize) : (-(buf_linesize))) failed at
libavcodec/videodsp_template.c:35

same thing happens if I use a testsrc
./ffmpeg_g -y -f lavfi -i "testsrc=size=2048x1556" \
    -vframes 5 \
    -profile:v "dnxhr_444" \
    -vcodec dnxhd \
    -pix_fmt yuv444p10 \
    test.mov

also get the same assertion for the hqx profile

_______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>


More information about the ffmpeg-devel mailing list