Skip to content

GitLab

  • Menu
Projects Groups Snippets
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • gst-omx gst-omx
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 31
    • Issues 31
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 2
    • Merge requests 2
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • GStreamer
  • gst-omxgst-omx
  • Issues
  • #8

Closed
Open
Created Dec 11, 2016 by Bugzilla Migration User@bugzilla-migration

omxvideodec: Support for egl_render on RPi breaks dynamic resolution changes

Submitted by min..@..arp.fm

Link to original bug (#775948)

Description

When a dynamic resolution change occurs, gst_omx_video_dec_reconfigure_output_port() is called in order to ensure the change is negotiated correctly.

In the original code path, the format is obtained from the GPU and maintained untouched:

format =
gst_omx_video_get_format_from_omx (port_def.format.video.eColorFormat);

On the RPI specifically, support for egl_render kicks in and hard codes the format instead to RGBA:

  state = gst_video_decoder_set_output_state (GST_VIDEO_DECODER (self),  
      GST_VIDEO_FORMAT_RGBA, port_def.format.video.nFrameWidth,  
      port_def.format.video.nFrameHeight, self->input_state);  

This works fine if downstream supports RGBA, however omxh264enc does not and attempts to renegotiate I420. After renegotiating to I420, the above code hard codes the format back to RGBA and we hang.

The workaround is to skip egl_render, and the dynamic negotiation works again.

Question: why is it necessary to hard code RGBA here? Should we not just respect the original format?

Assignee
Assign to
Time tracking