Details
-
Task
-
Resolution: Unresolved
-
P3: Somewhat important
-
None
-
None
-
-
519dbbc4c (dev), 50f73645f (6.5)
Description
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.
Attachments
Issue Links
- relates to
-
QTBUG-112173 Fix tst_qmediaplayerbackend
-
- Closed
-