[FFmpeg-devel] [FFmpeg-cvslog] ffplay: only use hardware accelerated SDL texture formats
Michael Niedermayer
michael at niedermayer.cc
Wed Apr 18 23:50:31 EEST 2018
On Tue, Apr 17, 2018 at 09:50:15PM +0200, Marton Balint wrote:
>
>
> On Tue, 17 Apr 2018, Michael Niedermayer wrote:
>
> >On Tue, Apr 17, 2018 at 01:27:48AM +0200, Marton Balint wrote:
> >>
> >>
> >>On Mon, 16 Apr 2018, Michael Niedermayer wrote:
> >>
> >>>Hi
> >>>
> >>>On Sat, Nov 04, 2017 at 06:28:58PM +0000, Marton Balint wrote:
> >>>>ffmpeg | branch: master | Marton Balint <cus at passwd.hu> | Sat Oct 28 22:46:08 2017 +0200| [415038f2bd321a3b41564d4e0c6c17d7a096c397] | committer: Marton Balint
> >>>>
> >>>>ffplay: only use hardware accelerated SDL texture formats
> >>>
> >>>This breaks ffplay playing some files like:
> >>>./ffplay fate-suite//cvid/catfight-cvid-pal8-partial.mov -noframedrop
> >>>
> >>>The output is completely black since this commit
> >>
> >>Seems like a bug in swscale (pal8 -> bgra conversion), the alpha is 0
> >>instead of 255.
> >
> >the file seems to store alpha = 0
> >SDL seems to treat alpha=0 different between PAL8 and RGBA, or maybe iam
> >missing something
>
> Old code negotiated RGB24 format for render which silently dropped the alpha
> channel. This seems to be because of a bug in pick_format:
>
> libavfilter/avfiltergraph.c, pick_format():
> int has_alpha= av_pix_fmt_desc_get(ref->format)->nb_components % 2 == 0;
>
> libavutil/pixdesc.c:
> #define pixdesc_has_alpha(pixdesc) \
> ((pixdesc)->nb_components == 2 || (pixdesc)->nb_components == 4 || (pixdesc)->flags & AV_PIX_FMT_FLAG_PAL)
>
>
> >
> >try this:
> >
> >diff --git a/libavformat/qtpalette.c b/libavformat/qtpalette.c
> >index 666c6b7351..51a134d30a 100644
> >--- a/libavformat/qtpalette.c
> >+++ b/libavformat/qtpalette.c
> >@@ -104,6 +104,7 @@ int ff_get_qtpalette(int codec_id, AVIOContext *pb, uint32_t *palette)
> > avio_r8(pb);
> > b = avio_r8(pb);
> > avio_r8(pb);
> >+ a = 0xFF;
> > palette[i] = (a << 24 ) | (r << 16) | (g << 8) | (b);
> > }
> > }
> >
>
> Obviously this fixes it. Why do we think that the first value is alpha?
> Parsing it was added in 0d59ae32c23 but according to the QuickTime specs the
> first int16 should be simply 0, not alpha:
the question here is probably are there files which use this for alpha ?
If theres no flag or othe to detect this then we could check for the
spec variant of all being 0 and treat this as all 0xFF alpha
I dont know or remember why this was using it as alpha
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
I am the wisest man alive, for I know one thing, and that is that I know
nothing. -- Socrates
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20180418/1b2915d0/attachment.sig>
More information about the ffmpeg-devel
mailing list