On Thu, 14 Nov 2013 17:58:29 +0100, wm4 <[email protected]> wrote: > On Thu, 14 Nov 2013 10:31:45 +0100 > Anton Khirnov <[email protected]> wrote: > > > --- > > doc/APIchanges | 3 +++ > > libavcodec/vaapi.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ > > libavcodec/vaapi.h | 17 +++++++++++++++++ > > libavcodec/version.h | 2 +- > > 4 files changed, 67 insertions(+), 1 deletion(-) > > > > diff --git a/doc/APIchanges b/doc/APIchanges > > index 1882fb8..efc96f1 100644 > > --- a/doc/APIchanges > > +++ b/doc/APIchanges > > @@ -13,6 +13,9 @@ libavutil: 2012-10-22 > > > > API changes, most recent first: > > > > +2013-11-xx - xxxxxxx - lavc 55.28.0 - vaapi.h > > + Add av_vaapi_get_profile(). > > + > > 2013-11-xx - xxxxxxx - lavu 52.18.0 - mem.h > > Move av_fast_malloc() and av_fast_realloc() for libavcodec to libavutil. > > > > diff --git a/libavcodec/vaapi.c b/libavcodec/vaapi.c > > index 0532daf..4c5fb9f 100644 > > --- a/libavcodec/vaapi.c > > +++ b/libavcodec/vaapi.c > > @@ -21,6 +21,9 @@ > > * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA > > 02110-1301 USA > > */ > > > > +#include <va/va.h> > > + > > +#include "avcodec.h" > > #include "h264.h" > > #include "vaapi_internal.h" > > > > @@ -216,4 +219,47 @@ finish: > > return ret; > > } > > > > +int av_vaapi_get_profile(AVCodecContext *avctx, VAProfile *profile) > > +{ > > +#define PROFILE(prof) \ > > +do { \ > > + *profile = prof; \ > > + return 0; \ > > +} while (0) > > + > > + switch (avctx->codec_id) { > > + case AV_CODEC_ID_MPEG1VIDEO: PROFILE(VAProfileMPEG2Main); > > + case AV_CODEC_ID_MPEG2VIDEO: > > + switch (avctx->profile) { > > + case FF_PROFILE_MPEG2_MAIN: PROFILE(VAProfileMPEG2Main); > > + case FF_PROFILE_MPEG2_SIMPLE: > > PROFILE(VAProfileMPEG2Simple); > > + default: return AVERROR(EINVAL); > > + } > > + case AV_CODEC_ID_H263: > > PROFILE(VAProfileMPEG4AdvancedSimple); > > + case AV_CODEC_ID_MPEG4: > > + switch (avctx->profile) { > > + case FF_PROFILE_MPEG4_SIMPLE: > > PROFILE(VAProfileMPEG4Simple); > > + case FF_PROFILE_MPEG4_ADVANCED_SIMPLE: > > PROFILE(VAProfileMPEG4AdvancedSimple); > > + default: return AVERROR(EINVAL); > > + } > > + case AV_CODEC_ID_H264: > > + switch (avctx->profile) { > > > + case FF_PROFILE_H264_CONSTRAINED_BASELINE: > > PROFILE(VAProfileH264ConstrainedBaseline); > > It appears vaapi doesn't always report the presence of this profile, > even if it could be decoded via MAIN. Does the caller have to handle > this? >
Do you have a better suggestions? If all known decoders can handle main, we can return main here, but otherwise I don't see a better way, unless you want lavc to do format negotiation. -- Anton Khirnov _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
