mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-21 10:55:51 +02:00
Use AV_PIX_FMT_FLAG_ALPHA for detecting transparency where nb_components was used
Temporarily keep the old method for ffmpeg_filters.c choose_pix_fmt and avfiltergraph.c pick_format() until a paletted pixel format without alpha is introduced. Signed-off-by: Marton Balint <cus@passwd.hu>
This commit is contained in:
parent
56b081da57
commit
7033654f7f
@ -65,6 +65,7 @@ enum AVPixelFormat choose_pixel_fmt(AVStream *st, AVCodecContext *enc_ctx, AVCod
|
|||||||
if (codec && codec->pix_fmts) {
|
if (codec && codec->pix_fmts) {
|
||||||
const enum AVPixelFormat *p = codec->pix_fmts;
|
const enum AVPixelFormat *p = codec->pix_fmts;
|
||||||
const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(target);
|
const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(target);
|
||||||
|
//FIXME: This should check for AV_PIX_FMT_FLAG_ALPHA after PAL8 pixel format without alpha is implemented
|
||||||
int has_alpha = desc ? desc->nb_components % 2 == 0 : 0;
|
int has_alpha = desc ? desc->nb_components % 2 == 0 : 0;
|
||||||
enum AVPixelFormat best= AV_PIX_FMT_NONE;
|
enum AVPixelFormat best= AV_PIX_FMT_NONE;
|
||||||
|
|
||||||
|
@ -624,7 +624,7 @@ FF_ENABLE_DEPRECATION_WARNINGS
|
|||||||
case AV_PIX_FMT_YUVA420P:
|
case AV_PIX_FMT_YUVA420P:
|
||||||
s->chroma_planes = desc->nb_components < 3 ? 0 : 1;
|
s->chroma_planes = desc->nb_components < 3 ? 0 : 1;
|
||||||
s->colorspace = 0;
|
s->colorspace = 0;
|
||||||
s->transparency = desc->nb_components == 4 || desc->nb_components == 2;
|
s->transparency = !!(desc->flags & AV_PIX_FMT_FLAG_ALPHA);
|
||||||
if (!avctx->bits_per_raw_sample && !s->bits_per_raw_sample)
|
if (!avctx->bits_per_raw_sample && !s->bits_per_raw_sample)
|
||||||
s->bits_per_raw_sample = 8;
|
s->bits_per_raw_sample = 8;
|
||||||
else if (!s->bits_per_raw_sample)
|
else if (!s->bits_per_raw_sample)
|
||||||
@ -676,7 +676,7 @@ FF_ENABLE_DEPRECATION_WARNINGS
|
|||||||
s->bits_per_raw_sample = 16;
|
s->bits_per_raw_sample = 16;
|
||||||
else if (!s->bits_per_raw_sample)
|
else if (!s->bits_per_raw_sample)
|
||||||
s->bits_per_raw_sample = avctx->bits_per_raw_sample;
|
s->bits_per_raw_sample = avctx->bits_per_raw_sample;
|
||||||
s->transparency = desc->nb_components == 4 || desc->nb_components == 2;
|
s->transparency = !!(desc->flags & AV_PIX_FMT_FLAG_ALPHA);
|
||||||
s->colorspace = 1;
|
s->colorspace = 1;
|
||||||
s->chroma_planes = 1;
|
s->chroma_planes = 1;
|
||||||
if (s->bits_per_raw_sample >= 16) {
|
if (s->bits_per_raw_sample >= 16) {
|
||||||
|
@ -679,6 +679,7 @@ static int pick_format(AVFilterLink *link, AVFilterLink *ref)
|
|||||||
|
|
||||||
if (link->type == AVMEDIA_TYPE_VIDEO) {
|
if (link->type == AVMEDIA_TYPE_VIDEO) {
|
||||||
if(ref && ref->type == AVMEDIA_TYPE_VIDEO){
|
if(ref && ref->type == AVMEDIA_TYPE_VIDEO){
|
||||||
|
//FIXME: This should check for AV_PIX_FMT_FLAG_ALPHA after PAL8 pixel format without alpha is implemented
|
||||||
int has_alpha= av_pix_fmt_desc_get(ref->format)->nb_components % 2 == 0;
|
int has_alpha= av_pix_fmt_desc_get(ref->format)->nb_components % 2 == 0;
|
||||||
enum AVPixelFormat best= AV_PIX_FMT_NONE;
|
enum AVPixelFormat best= AV_PIX_FMT_NONE;
|
||||||
int i;
|
int i;
|
||||||
|
@ -2482,7 +2482,7 @@ enum AVPixelFormat av_pix_fmt_swap_endianness(enum AVPixelFormat pix_fmt)
|
|||||||
#define FF_COLOR_XYZ 4
|
#define FF_COLOR_XYZ 4
|
||||||
|
|
||||||
#define pixdesc_has_alpha(pixdesc) \
|
#define pixdesc_has_alpha(pixdesc) \
|
||||||
((pixdesc)->nb_components == 2 || (pixdesc)->nb_components == 4 || (pixdesc)->flags & AV_PIX_FMT_FLAG_PAL)
|
((pixdesc)->flags & AV_PIX_FMT_FLAG_ALPHA)
|
||||||
|
|
||||||
|
|
||||||
static int get_color_type(const AVPixFmtDescriptor *desc) {
|
static int get_color_type(const AVPixFmtDescriptor *desc) {
|
||||||
|
Loading…
Reference in New Issue
Block a user