* @file
* Hap decoder
*
- * Fourcc: Hap1, Hap5, HapY
+ * Fourcc: Hap1, Hap5, HapY, HapA, HapM
*
* https://github.com/Vidvox/hap/blob/master/documentation/HapVideoDRAFT.md
*/
if ((avctx->codec_tag == MKTAG('H','a','p','1') && (section_type & 0x0F) != HAP_FMT_RGBDXT1) ||
(avctx->codec_tag == MKTAG('H','a','p','5') && (section_type & 0x0F) != HAP_FMT_RGBADXT5) ||
- (avctx->codec_tag == MKTAG('H','a','p','Y') && (section_type & 0x0F) != HAP_FMT_YCOCGDXT5)) {
+ (avctx->codec_tag == MKTAG('H','a','p','Y') && (section_type & 0x0F) != HAP_FMT_YCOCGDXT5) ||
+ (avctx->codec_tag == MKTAG('H','a','p','A') && (section_type & 0x0F) != HAP_FMT_RGTC1)) {
av_log(avctx, AV_LOG_ERROR,
"Invalid texture format %#04x.\n", section_type & 0x0F);
return AVERROR_INVALIDDATA;
ctx->tex_fun = ctx->dxtc.dxt5ys_block;
avctx->pix_fmt = AV_PIX_FMT_RGB0;
break;
+ case MKTAG('H','a','p','A'):
+ texture_name = "RGTC1";
+ ctx->tex_rat = 8;
+ ctx->tex_fun = ctx->dxtc.rgtc1u_block;
+ avctx->pix_fmt = AV_PIX_FMT_RGB0;
+ break;
+ case MKTAG('H','a','p','M'):
+ avpriv_report_missing_feature(avctx, "HapQAlpha");
+ return AVERROR_PATCHWELCOME;
default:
return AVERROR_DECODER_NOT_FOUND;
}