Opened 4 years ago

Closed 4 years ago

#1914 closed defect (fixed)

libavcodec is unable to decode h264 created by "Unreal h264 encoder"

Reported by: Kozlov Sergey Owned by:
Priority: normal Component: avcodec
Version: git-master Keywords: h264
Cc: Blocked By:
Blocking: Reproduced by developer: yes
Analyzed by developer: no


Summary of the bug:
How to reproduce:
open file with Graph Studio Next
Patches should be submitted to the ffmpeg-devel mailing list and not this bug tracker.

Attachments (1)

test 8.mp4 (2.2 MB) - added by cehoyos 4 years ago.

Change History (6)

Changed 4 years ago by cehoyos

comment:1 Changed 4 years ago by cehoyos

  • Analyzed by developer unset
  • Keywords h264 added; libavcodec removed
  • Priority changed from important to normal
  • Reproduced by developer unset
  • Version changed from unspecified to git-master

Which software plays the file?
(Is this a 3d / mvc stream?)

comment:2 follow-up: Changed 4 years ago by Kozlov Sergey

Graph Studio Plays The File.

I found it:
the error is in mp4muxer or in mp4demuxer (both from GDCL).

I will write them.
You may also take a look at this file.
But it is not encoder or decoder error.

mp4muxer does not give video stream to decoder.
There is offset overflow while reading chanks (negative offset in long variable).

This may be causer by writer (mp4muxer) (wrong data written to file) or by reader mp4demuxer (wrong data reading place).

comment:3 Changed 4 years ago by Kozlov Sergey


I have figured out that in some cases mp4muxer and mp4demuxer work.

Now i suspect UXH264 video encoder and your avcodec.

mp4muxer works for direct stream copy and in case NV12 video format.
For NV12 video format coder, file can be displayer by "Super" player.

Also mp4demuxer works while playing file, created by "Super".

There left only video encoder UXH264 and your decoder.

video encoder is on major suspection.

The video encoder uses "libx264.a".
For this file i have got no source code.

Before conversion to h264 by "libx264.a"
function /* x264_encoder_encode:

  • encode one picture */

int x264_encoder_encode ( x264_t *, x264_nal_t , int *, x264_picture_t *, x264_picture_t * );
declared in x364.h file) video has right YV12 format (i had checked).

I will try to check "libx264.a".

Also, could you explain, how to save picture (frame) coded by x264_encoder_encode, and how to view, if it has right?

Version 0, edited 4 years ago by Kozlov Sergey (next)

comment:4 in reply to: ↑ 2 Changed 4 years ago by cehoyos

Replying to Kozlov Sergey:

Graph Studio Plays The File.

Iiuc, Graph Studio does not contain a decoder, but uses a decoder installed on your system. Which decoder is installed?

comment:5 Changed 4 years ago by michael

  • Reproduced by developer set
  • Resolution set to fixed
  • Status changed from new to closed
Note: See TracTickets for help on using tickets.