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

Paul B Mahol onemda at gmail.com
Tue Mar 28 15:41:58 EEST 2017


On 3/28/17, Mark Reid <mindmark at gmail.com> wrote:
> 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

Try attached patch: hqx have some issues with ratecontrol.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-avcodec-dnxhdenc-DNxHR-444-and-HQX-support.patch
Type: text/x-diff
Size: 21546 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20170328/4c4fe44e/attachment.patch>


More information about the ffmpeg-devel mailing list