Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-108446

Investigate creating hw frame context for video renderer

XMLWordPrintable

    • Icon: Task Task
    • Resolution: Unresolved
    • Icon: P3: Somewhat important P3: Somewhat important
    • None
    • None
    • Multimedia
    • Android
    • 519dbbc4c (dev), 50f73645f (6.5)

      Problem:
      See method VideoRenderer::renderInternal. There is a disabled code that creates hw frames context if it doesn't exist. In general, this code doesn't work correctly. It's not enough just to make context, since ffmpeg uses specific data fields in the case hw_frames_ctx exists. E.g. 

       av_hwframe_transfer_data(...) 
          => 

      static int vt_map_frame(AVHWFramesContext *ctx, AVFrame *dst, const AVFrame *src, int flags)
      {
          CVPixelBufferRef pixbuf = (CVPixelBufferRef)src->data[3]; // it's null if hw_frames_ctx is not set
          ...
      }

       

      Steps to reproduce the problem:

        - Enable hw_frames_ctx creation in VideoRenderer::renderInternal

        - Run test tst_QMediaPlayerBackend::seekPauseSeek on MacOS
      or
        - Open the attached file in mediaplyer example. [^colors.mp4][^colors.ogv]

      To be done:

      Investigate the case and implement on of the following:

        - Implement hw_frames_ctx creation for the current video format on ffmpeg side and remove the disable code.
      or
        - Fix frame->data and use the existing approach.

       

       

        1. colors-1.mp4
          25 kB
          Artem Dyomin
        2. colors-1.ogv
          12 kB
          Artem Dyomin
        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

            qtmultimediateam Qt Multimedia Team
            artemiy Artem Dyomin
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: