Merge commit 'd565fef1b83b6c5f8afb32229260b79f67c68109'

* commit 'd565fef1b83b6c5f8afb32229260b79f67c68109':
  vdpau: add AV_HWACCEL_FLAG_IGNORE_LEVEL to skip the codec level check

Conflicts:
	libavcodec/version.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
Michael Niedermayer 2014-10-15 12:30:07 +02:00
commit 51c810e62b
6 changed files with 24 additions and 5 deletions

View File

@ -15,6 +15,9 @@ libavutil: 2014-08-09
API changes, most recent first:
2014-10-xx - xxxxxxx - lavc 56.4.0 - avcodec.h
Add AV_HWACCEL_FLAG_IGNORE_LEVEL flag to av_vdpau_bind_context().
2014-10-13 - xxxxxxx - lavc 56.03.0 - avcodec.h
Add AVCodecContext.initial_padding. Deprecate the use of AVCodecContext.delay
for audio encoding.

View File

@ -3229,7 +3229,8 @@ int av_codec_get_max_lowres(const AVCodec *codec);
struct MpegEncContext;
/**
* AVHWAccel.
* @defgroup lavc_hwaccel AVHWAccel
* @{
*/
typedef struct AVHWAccel {
/**
@ -3365,6 +3366,17 @@ typedef struct AVHWAccel {
int priv_data_size;
} AVHWAccel;
/**
* Hardware acceleration should be used for decoding even if the codec level
* used is unknown or higher than the maximum supported level reported by the
* hardware driver.
*/
#define AV_HWACCEL_FLAG_IGNORE_LEVEL (1 << 0)
/**
* @}
*/
/**
* @defgroup lavc_picture AVPicture
*

View File

@ -107,7 +107,9 @@ int ff_vdpau_common_init(AVCodecContext *avctx, VdpDecoderProfile profile,
vdctx->device = hwctx->device;
vdctx->get_proc_address = hwctx->get_proc_address;
if (level < 0)
if (hwctx->flags & AV_HWACCEL_FLAG_IGNORE_LEVEL)
level = 0;
else if (level < 0)
return AVERROR(ENOTSUP);
status = vdctx->get_proc_address(vdctx->device,
@ -686,7 +688,7 @@ int av_vdpau_bind_context(AVCodecContext *avctx, VdpDevice device,
{
VDPAUHWContext *hwctx;
if (flags != 0)
if (flags & ~AV_HWACCEL_FLAG_IGNORE_LEVEL)
return AVERROR(EINVAL);
if (av_reallocp(&avctx->hwaccel_context, sizeof(*hwctx)))
@ -698,6 +700,7 @@ int av_vdpau_bind_context(AVCodecContext *avctx, VdpDevice device,
hwctx->context.decoder = VDP_INVALID_HANDLE;
hwctx->device = device;
hwctx->get_proc_address = get_proc;
hwctx->flags = flags;
hwctx->reset = 1;
return 0;
}

View File

@ -162,7 +162,7 @@ void av_vdpau_hwaccel_set_render2(AVVDPAUContext *, AVVDPAU_Render2);
* @param avctx decoding context whose get_format() callback is invoked
* @param device VDPAU device handle to use for hardware acceleration
* @param get_proc_address VDPAU device driver
* @param flags for future use, must be zero
* @param flags zero of more OR'd AV_HWACCEL_FLAG_* flags
*
* @return 0 on success, an AVERROR code on failure.
*/

View File

@ -60,6 +60,7 @@ typedef struct VDPAUHWContext {
VdpDevice device;
VdpGetProcAddress *get_proc_address;
char reset;
unsigned char flags;
} VDPAUHWContext;
typedef struct VDPAUContext {

View File

@ -29,7 +29,7 @@
#include "libavutil/version.h"
#define LIBAVCODEC_VERSION_MAJOR 56
#define LIBAVCODEC_VERSION_MINOR 5
#define LIBAVCODEC_VERSION_MINOR 6
#define LIBAVCODEC_VERSION_MICRO 100
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \