• Zhao Zhili's avatar
    avutil/hwcontext_mediacodec: fix backward compatibility · 1263b0a6
    Zhao Zhili authored
    AVMediaCodecDeviceContext without surface or native_window is
    useless, it shouldn't be created at all. Such dummy AVHWDeviceContext
    is allowed before, and it's used by mpv player. Creating a ANativeWindow
    automatically breaks such usecases.
    
    So disable creating a ANativeWindow by default. It can be enabled
    via the create_window flag, or by set the AVDictionary of
    av_hwdevice_ctx_create(). The downside is that
    
    ffmpeg -hwaccel mediacodec -i input.mp4 \
    	-c:a copy -c:v hevc_mediacodec output.mp4
    
    use ByteBuffer mode which isn't as efficient as before. The upside
    is libavfilter works now, which should be less surprise.
    
    To enable create_window on ffmpeg command line, use
    ffmpeg -hwaccel mediacodec \
    	-init_hw_device mediacodec=mediacodec,create_window=1 \
    	-i input.mp4 -c:a copy -c:v hevc_mediacodec output.mp4
    
    Users should know what it is to enable create_window. It should
    be OK to take sometime to figure out the option. And there are comments
    inside hwcontext_mediacodec.h to help user figure it out.
    Signed-off-by: 's avatarZhao Zhili <zhilizhao@tencent.com>
    1263b0a6
hwcontext_mediacodec.c 3.47 KB