[FFmpeg-devel] libavcodec/hapenc : add support for hap alpha only encoding
Tom Butterworth
bangnoise at gmail.com
Wed Sep 27 13:21:17 EEST 2017
Yo
> Patch 1 : 0004-libavcodec-texturedspenc-add-rgtc1u-encoding
<snip>
> +/**
> + * Compress one block of RGBA pixels in a RGTC1U texture and store the
> + * resulting bytes in 'dst'. Alpha is preserved.
> + *
> + * @param dst output buffer.
> + * @param stride scanline in bytes.
> + * @param block block to compress.
> + * @return how much texture data has been written.
> + */
> +static int rgtc1u_block(uint8_t *dst, ptrdiff_t stride, const uint8_t *block)
> +{
> + compress_alpha(dst, stride, block);
> +
> + return 8;
> +}
Although this makes sense for Hap which stores an alpha channel in RGTC textures, this is not standard and a general purpose RGTC1U compressor should take its values from the red channel. This function should match your rgtc1u_alpha_block() from your 0006-libavodec-texturedsp-add-rgtc1u_alpha-uncompress-fun.patch
> Patch 2 : 0005-libavcodec-hapenc-add-support-for-hap-alpha-only-enc
> enable hap alpha only encoding in hapenc (and doc)
> Ratio need to be 8 for RGTC1 otherwise, only ffmpeg can decode the frame
> (the official hap lib failed to read the frame)
8 is correct so that makes sense
> + case HAP_FMT_RGTC1:
> + ratio = 8;
> + avctx->codec_tag = MKTAG('H', 'a', 'p', 'A');
> + avctx->bits_per_coded_sample = 24;
Some applications use the value from bits_per_coded_sample to determine the presence of alpha, so by convention this should probably be 32.
Cheers - Tom
>
> To test :
> FFmpeg need to be compile with snappy library (--enable-libsnappy)
>
> ./ffmpeg -i fileRgba -c:v hap -format hap_alpha_only res.mov
>
> I test the result in the 3 hap mode (with ffmpeg (with previous patch for
> hap alpha only decoding decoding) and HapInAVFoundation test app (in OpenGL
> mode))
>
> compressor None
> compressor snappy 1 chunk
> compressor snappy 16 chunks
>
>
> Martin
> Jokyo Images
> <0004-libavcodec-texturedspenc-add-rgtc1u-encoding.patch><0005-libavcodec-hapenc-add-support-for-hap-alpha-only-enc.patch>_______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
More information about the ffmpeg-devel
mailing list