This week we sent the decoder for review on the mesa-dev mailing list. Julien helped me fix the more advanced edge cases / bugs in the H.264 encoder while I made changes that were asked for by the reviewers. I’ll talk about all that in below in brief.
This week we had two rounds of reviews made for the decoder part only.
The first set of patches consisted of two changes:
- st/omx_tizonia: add –enable-omx-tizonia flag and build files : Makes changes to enable the build flag for tizonia. Also adds targets/omx-tizonia.
- st/omx_tizonia: Add AVC decoder : Adds everything under st/omx including the decoder.
These patches were not committed since there were a few issues that I tried to address in second round of reviews.
The patches that were sent after addressing the issues were the following:
- st/omx_bellagio: Rename state tracker and option : Renames old bellagio state tracker and option. I had trouble sending this patch because of it being too large so I ended up sending all the patches again by mistake.
- st/omx_tizonia: Add –enable-omx-tizonia flag and build files : Same patch as #1 in earlier patches.
- st/omx_tizonia: Add entrypoint : Split from patch #2 from earlier to add only st/omx_tizonia/entrypoint.* and related files.
- st/omx_tizonia: Add H.264 decoder : Split from patch #2 to add only decoder.
There were generally no issues with patch #1 and was acked by Christian König.
About the other patches, after some discussion, it was decided that it’s better for the merging to be postponed until both omx_bellagio and omx_tizonia have the shared code refactored out to avoid duplicacy. The changes about general functions like “put_screen” and “get_screen” were sent for review here to check if this was the right way. About the other changes we tried out some experimental changes in this commit. This didn’t quite work since we need to pass the private types to “slice_header” and there doesn’t seem to be any elegant way yet to do so without having to adding OMX IL bits to gallium/auxiliary/vl which will be undesirable. So Julien decided to postpone this task until after monday.
Bugs and fixes
While the patches were being reviewed Julien helped with fixing some issues / bugs in the project.
EGLImage wrong colours fixed
EOS buffer clear error fix
Also related to EGLImage was the issue that it failed to clear the video buffers at the end of decoding process. The fix was to increment reference counter of the resource texture.
EGLImage hook issue false negative
The EGLImage hook failing issue was in fact not an issue. I used wrong pipeline to run the decoder. The right pipeline is
MESA_ENABLE_OMX_EGLIMAGE=1 GST_GL_API=gles2 GST_GL_PLATFORM=egl gst-launch-1.0 filesrc location=vid.mp4 ! qtdemux ! h264parse ! omxh264dec ! glimagesink
Artefacts at start of video fixed
Deadline next week
With EGLImage working the project has been a success. The work left is to address the edge cases if possible before submitting the project. Merging the commits to the project is also good to have. The next post will be about the whole project summary which will also serve as final submission for this GSoC project.