On Tue, 24 Apr 2018 20:23:43 +0200 (CEST) Marton Balint <c...@passwd.hu> wrote:
> On Tue, 24 Apr 2018, Michael Niedermayer wrote: > > > On Tue, Apr 24, 2018 at 02:10:53AM +0200, Michael Niedermayer wrote: > >> On Mon, Apr 23, 2018 at 04:50:54AM +0200, Marton Balint wrote: > >>> > >>> > >>> On Mon, 23 Apr 2018, Michael Niedermayer wrote: > >>> > >>>> On Sun, Apr 22, 2018 at 01:44:19PM +0200, Marton Balint wrote: > >>>>> > >>>>> > >>>>> On Fri, 20 Apr 2018, Michael Niedermayer wrote: > >>>>> > >>>>>> On Thu, Apr 19, 2018 at 09:32:19PM +0200, Marton Balint wrote: > >>>>>>> A pixel format which has a palette also has alpha, without this patch > >>>>>>> the > >>>>>>> format negotiation might have preferred formats without alpha even if > >>>>>>> the > >>>>>>> source had alpha. > >>>>>>> > >>>>>>> Signed-off-by: Marton Balint <c...@passwd.hu> > >>>>>>> --- > >>>>>>> libavfilter/avfiltergraph.c | 2 +- > >>>>>>> 1 file changed, 1 insertion(+), 1 deletion(-) > >>>>>>> > >>>>>>> diff --git a/libavfilter/avfiltergraph.c b/libavfilter/avfiltergraph.c > >>>>>>> index 4cc6892404..e18f733e23 100644 > >>>>>>> --- a/libavfilter/avfiltergraph.c > >>>>>>> +++ b/libavfilter/avfiltergraph.c > >>>>>>> @@ -679,7 +679,7 @@ static int pick_format(AVFilterLink *link, > >>>>>>> AVFilterLink *ref) > >>>>>>> > >>>>>>> if (link->type == AVMEDIA_TYPE_VIDEO) { > >>>>>>> if(ref && ref->type == AVMEDIA_TYPE_VIDEO){ > >>>>>>> - 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 || > >>>>>>> (av_pix_fmt_desc_get(ref->format)->flags & AV_PIX_FMT_FLAG_PAL); > >>>>>> > >>>>>> This causes various output files to grow in size with a unused alpha > >>>>>> plane > >>>>>> > >>>>>> a random example: (there are likels better examples) > >>>>>> ./ffmpeg -y -i ~/tickets/1116/1023.bmp -vf negate fileX.bmp > >>>>>> > >>>>>> Iam not sure unconditionally treating all palettes as if they have > >>>>>> non fully opaque entries is a good idea. > >>>>> > >>>>> Obviously not, but it is already treated this way in most places. > >>>>> Having a > >>>>> bigger image with alpha is better than losing alpha. And the user can > >>>>> always > >>>>> force losing alpha with a filter, and sometimes he has to do that anyway > >>>>> because for example fre0r filters have no way of signalling if they use > >>>>> alpha or not... > >>>> > >>>> you can, the average user certainly doesnt have the knowledge to adjust > >>>> anything alpha by hand, the average user isnt even aware of that the > >>>> issue > >>>> is alpha or pal8 related probably > >>>> > >>>> also about "better", i saw a few cases that got bigger, i dont remember > >>>> seeing a case that was fixed. > >>>> Have you seen real usecases this fixes ? > >>> > >>> A source file with a palette and alpha and a filter which supports formats > >>> with both alpha and without: > >>> > >>> https://dab1nmslvvntp.cloudfront.net/images/blogs/design/8bit-trans.png > >>> > >>> ffmpeg -i 8bit-trans.png -vf negate out.bmp > >> > >> i assume fate doesnt cover this yet, so a new fate test probably makes > >> sense > > > > i still think it would be more ideal if this is fully fixed > > (by alpha / non alpha pal8) or other. > > > > Because as is we have a set of bugs, and with this patchset we fix some > > while > > introducing other (maybe less important though) bugs. > > Then later behavior changes again when this is all fixed. > > A smaller number of behavior changes should be better and less confusing to > > users. > > I will rework the series, we can postpone actually fixing ffmpeg_filters.c > and avfiltergraph.c pick_format(), I will add FIXME-s for those. At this point, actually adding a separate PAL8 format seems most attractive. Wouldn't it make everyone happy? Though I wonder which codecs are supposed to use it. (And if it's not clear whether something has alpha or not, we should strictly opt not to lose information, anyway.) _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel