Не удалось создать HWDeviceContext для h264 и Videotoolbox с помощью FFmpeg для iOS ⇐ C++
Не удалось создать HWDeviceContext для h264 и Videotoolbox с помощью FFmpeg для iOS
Я пытаюсь декодировать видео h264 с использованием аппаратного ускорения в FFmpeg, специально для устройств iOS и с помощью аппаратного устройства VideoToolbox. Хотя я успешно сгенерировал контекст декодера, но столкнулся с трудностями при создании контекста аппаратного устройства и настройке ссылки на буфер. Я новичок в ffmpeg и ищу помощь в решении проблемы. Соответствующий фрагмент кода находится здесь:
класс Decoder_Setup { частный: AVCodecContext *decoder_ctx = NULL; const AVCodec *decoder = NULL; тип перечисления AVHWDeviceType; AVBufferRef *buffer_ref = NULL; AVPixelFormat pix_fmt; AVCodecHWConfig *hwConfig = NULL; публика: интервал набора(); }; int Decoder_Setup::set() { тип = AV_HWDEVICE_TYPE_VIDEOTOOLBOX; pix_fmt = AV_PIX_FMT_VIDEOTOOLBOX; декодер = avcodec_find_decoder_by_name("h264"); decoder_ctx = avcodec_alloc_context3 (декодер); int res = av_hwdevice_ctx_create(&buffer_ref, type, NULL, NULL, 0); decoder_ctx->hw_device_ctx = buffer_ref; // decoder_ctx->get_format = (AVPixelFormat (*)(AVCodecContext *, const AVPixelFormat *)) AV_PIX_FMT_VIDEOTOOLBOX; avcodec_open2 (decoder_ctx, декодер, NULL); вернуть разрешение; } Заранее благодарим вас за помощь!
Я пытаюсь декодировать видео h264 с использованием аппаратного ускорения в FFmpeg, специально для устройств iOS и с помощью аппаратного устройства VideoToolbox. Хотя я успешно сгенерировал контекст декодера, но столкнулся с трудностями при создании контекста аппаратного устройства и настройке ссылки на буфер. Я новичок в ffmpeg и ищу помощь в решении проблемы. Соответствующий фрагмент кода находится здесь:
класс Decoder_Setup { частный: AVCodecContext *decoder_ctx = NULL; const AVCodec *decoder = NULL; тип перечисления AVHWDeviceType; AVBufferRef *buffer_ref = NULL; AVPixelFormat pix_fmt; AVCodecHWConfig *hwConfig = NULL; публика: интервал набора(); }; int Decoder_Setup::set() { тип = AV_HWDEVICE_TYPE_VIDEOTOOLBOX; pix_fmt = AV_PIX_FMT_VIDEOTOOLBOX; декодер = avcodec_find_decoder_by_name("h264"); decoder_ctx = avcodec_alloc_context3 (декодер); int res = av_hwdevice_ctx_create(&buffer_ref, type, NULL, NULL, 0); decoder_ctx->hw_device_ctx = buffer_ref; // decoder_ctx->get_format = (AVPixelFormat (*)(AVCodecContext *, const AVPixelFormat *)) AV_PIX_FMT_VIDEOTOOLBOX; avcodec_open2 (decoder_ctx, декодер, NULL); вернуть разрешение; } Заранее благодарим вас за помощь!
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение