add av_dv_codec_profile2 : uses framerate to select best matching profile. default on first matching profile
Signed-off-by: Steve Jiekak <devaureshy@gmail.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
bde27e1e61
commit
6e9ac02af8
@ -15,6 +15,9 @@ libavutil: 2014-08-09
|
|||||||
|
|
||||||
API changes, most recent first:
|
API changes, most recent first:
|
||||||
|
|
||||||
|
2014-12-04 - xxxxxxx - lavc 56.14.100 - dv_profile.h
|
||||||
|
Add av_dv_codec_profile2().
|
||||||
|
|
||||||
-------- 8< --------- FFmpeg 2.5 was cut here -------- 8< ---------
|
-------- 8< --------- FFmpeg 2.5 was cut here -------- 8< ---------
|
||||||
|
|
||||||
2014-11-21 - ab922f9 - lavu 54.15.100 - dict.h
|
2014-11-21 - ab922f9 - lavu 54.15.100 - dict.h
|
||||||
|
@ -315,15 +315,35 @@ const AVDVProfile *av_dv_codec_profile(int width, int height,
|
|||||||
enum AVPixelFormat pix_fmt)
|
enum AVPixelFormat pix_fmt)
|
||||||
{
|
{
|
||||||
#if CONFIG_DVPROFILE
|
#if CONFIG_DVPROFILE
|
||||||
int i;
|
return av_dv_codec_profile2(width, height, pix_fmt, (AVRational){0, 0});
|
||||||
|
|
||||||
for (i = 0; i < FF_ARRAY_ELEMS(dv_profiles); i++)
|
|
||||||
if (height == dv_profiles[i].height &&
|
|
||||||
pix_fmt == dv_profiles[i].pix_fmt &&
|
|
||||||
width == dv_profiles[i].width)
|
|
||||||
return &dv_profiles[i];
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const AVDVProfile *av_dv_codec_profile2(int width, int height,
|
||||||
|
enum AVPixelFormat pix_fmt,
|
||||||
|
AVRational frame_rate)
|
||||||
|
{
|
||||||
|
const AVDVProfile *p = NULL;
|
||||||
|
#if CONFIG_DVPROFILE
|
||||||
|
int i;
|
||||||
|
/* frame rate is necessary to select between 720p50 and 720p60 profiles */
|
||||||
|
int invalid_framerate = frame_rate.num == 0 || frame_rate.den == 0;
|
||||||
|
|
||||||
|
for (i = 0; i < FF_ARRAY_ELEMS(dv_profiles); i++)
|
||||||
|
if (height == dv_profiles[i].height &&
|
||||||
|
pix_fmt == dv_profiles[i].pix_fmt &&
|
||||||
|
width == dv_profiles[i].width)
|
||||||
|
{
|
||||||
|
if( invalid_framerate || av_div_q(dv_profiles[i].time_base, frame_rate).num == 1 )
|
||||||
|
return &dv_profiles[i];
|
||||||
|
|
||||||
|
if(!p)
|
||||||
|
p = &dv_profiles[i];
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -83,4 +83,10 @@ const AVDVProfile *av_dv_frame_profile(const AVDVProfile *sys,
|
|||||||
*/
|
*/
|
||||||
const AVDVProfile *av_dv_codec_profile(int width, int height, enum AVPixelFormat pix_fmt);
|
const AVDVProfile *av_dv_codec_profile(int width, int height, enum AVPixelFormat pix_fmt);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a DV profile for the provided stream parameters.
|
||||||
|
* The frame rate is used as a best-effort parameter.
|
||||||
|
*/
|
||||||
|
const AVDVProfile *av_dv_codec_profile2(int width, int height, enum AVPixelFormat pix_fmt, AVRational frame_rate);
|
||||||
|
|
||||||
#endif /* AVCODEC_DV_PROFILE_H */
|
#endif /* AVCODEC_DV_PROFILE_H */
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
#include "libavutil/version.h"
|
#include "libavutil/version.h"
|
||||||
|
|
||||||
#define LIBAVCODEC_VERSION_MAJOR 56
|
#define LIBAVCODEC_VERSION_MAJOR 56
|
||||||
#define LIBAVCODEC_VERSION_MINOR 13
|
#define LIBAVCODEC_VERSION_MINOR 14
|
||||||
#define LIBAVCODEC_VERSION_MICRO 100
|
#define LIBAVCODEC_VERSION_MICRO 100
|
||||||
|
|
||||||
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
|
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
|
||||||
|
Loading…
x
Reference in New Issue
Block a user