[FFmpeg-devel] libavcodec/hapdec : add support for HapAphaOnly decoding
Tom Butterworth
bangnoise at gmail.com
Wed Sep 27 16:33:13 EEST 2017
> On 27 Sep 2017, at 14:20, Martin Vignali <martin.vignali at gmail.com> wrote:
>
> 2017-09-27 13:25 GMT+02:00 Tom Butterworth <bangnoise at gmail.com <mailto:bangnoise at gmail.com>>:
>
>>
>>
>>> On 27 Sep 2017, at 11:59, Martin Vignali <martin.vignali at gmail.com>
>> wrote:
>>>
>>>>
>>>>> + ctx->tex_fun = ctx->dxtc.rgtc1u_block;
>>>>> + avctx->pix_fmt = AV_PIX_FMT_RGB0;
>>>>
>>>> The rgtc1u_block function places the single channel value in every
>> channel
>>>> except the alpha channel
>>>> The pixel format you have chosen is one which disregards the alpha
>> channel
>>>>
>>>> The output of this alpha-only decoder should be in the alpha channel of
>> a
>>>> pixel format which carries alpha. Probably other channels should have
>> zero
>>>> values.
>>>>
>>>>
>>> Hi Tom,
>>>
>>> After Carl answer, and thinking about that,
>>> The goal of HapAlphaOnly, is to store alpha, but can also store gray only
>>> (much better than HAP)
>>> In fact, it can be call HAP Gray !
>>
>> But it isn’t
>>
>>> For example from my part, i would like to use this codec, for matte, but
>>> also for gray only layer (use with color blending)
>>
>> This is fine, but let’s concentrate on supporting Hap Alpha Only, not your
>> non-standard use of it. If you would like this flexibility in Hap, that
>> should be argued for on the Hap project, not within FFmpeg.
>>
>> Hap Alpha Only is defined as an *alpha* channel stored in RGTC1U, and the
>> implementation in FFmpeg must follow the definition (see
>> https://github.com/Vidvox/hap/blob/master/documentation/HapVideoDRAFT.md <
>> https://github.com/Vidvox/hap/blob/master/documentation/HapVideoDRAFT.md <https://github.com/Vidvox/hap/blob/master/documentation/HapVideoDRAFT.md>>
>> ).
>>
>> The Alpha Only encoder and decoder must ingest and emit a pixel format
>> which carries alpha. It may be that adding a new alpha-only pixel format is
>> not seen as desirable, in which case an existing format with alpha should
>> be selected. This allows users to, eg, transcode from an RGBA format to Hap
>> Alpha Only and have the channel they expect be preserved from the input
>> video. Any other behaviour (eg having RGB converted to grey and then stored
>> as alpha) is not acceptable.
>>
>>> If a user want to compress a gray picture, it can be done using RGB to
>> Gray
>>> conversion
>>> And if user want to compress only alpha or a specific channel, i think
>>> ffmpeg have a filter for that (extractplanes (untested)),
>>
>> Your non-standard usage can still be achieved by channel switching in a
>> filter, the default behaviour must be according to the standard, which is
>> to encode and decode the alpha channel.
>>
>> Cheers - Tom
>> <http://ffmpeg.org/mailman/listinfo/ffmpeg-devel <http://ffmpeg.org/mailman/listinfo/ffmpeg-devel>>
>>
>
>
> Ok, in that case, the HAP Alpha Encoding current patch is fine (it take
> alpha from RGBA input)
> I will change the 24 to 32 as requested and send a new patch
>
> Before sending a new patch for the decoding :
> did you think, it's better to have [255,255,255, alpha] or [0,0,0, alpha]
> for RGTC1 alpha decoding in RGBA ?
Personally I’d think 0 to allow further operations to eg combine the image with one with colour channels to work as expected.
More information about the ffmpeg-devel
mailing list