[FFmpeg-devel] [PATCH 2/2] libavformat: Enable jpeg streams in HEIF MOVContext
James Almer
jamrial at gmail.com
Fri Jul 18 03:25:40 EEST 2025
On 7/17/2025 8:54 AM, Lynne wrote:
> Thanks. Patchset LGTM.
> This also helps HEIF files generated by the S1II, but sadly they still
> fail:
>
> > [mjpeg @ 0x55a49a0e29c0] No JPEG data found in image
>
> And for the main stream:
>
> > [hevc @ 0x55a49a0fe880] Failed to parse header of NALU (type 34):
> "Invalid data found when processing input". Skipping NALU.
> > [hevc @ 0x55a49a0fe880] Invalid NAL unit size (1229531648 > 102386).
> > [hevc @ 0x55a49a0fe880] Error splitting the input into NAL units.
> > [vist#0:0/hevc @ 0x55a49a0e5000] [dec:hevc @ 0x55a49a103a80] Decoding
> error: Invalid data found when processing input
>
> I wonder what they're doing with the thumbnail and NALUs. If you'd like
> to take a look at it, here's a sample:
> https://files.lynne.ee/P1001083.HIF
This is a handling error in mov.c, because the order of entries in iloc
and iinf in this sample are not in the same order, when the code
incorrectly expects them to.
Curious how this is the first sample we see where that's not true.
>
> On 17/07/2025 11:30, Eric Joyner wrote:
>> Nikon HEIFs from a camera or NX studio include a small jpeg thumbnail
>> in addition to
>> the expected HEVC thumbnails; allowing jpegs allows all thumbnails to
>> have an associated stream for Nikon HEIF files.
>>
>> With this, Nikon HEIFs can finally be decoded without failing and the
>> thumbnails can be extracted into their own files.
>>
>> Signed-off-by: Eric Joyner <erj at erj.cc>
>> ---
>> libavformat/mov.c | 1 +
>> 1 file changed, 1 insertion(+)
>>
>> diff --git a/libavformat/mov.c b/libavformat/mov.c
>> index 7010e13b50..19b31b032d 100644
>> --- a/libavformat/mov.c
>> +++ b/libavformat/mov.c
>> @@ -8840,6 +8840,7 @@ static int mov_read_infe(MOVContext *c,
>> AVIOContext *pb, MOVAtom atom, int idx)
>> switch (item_type) {
>> case MKTAG('a','v','0','1'):
>> + case MKTAG('j','p','e','g'):
>> case MKTAG('h','v','c','1'):
>> ret = heif_add_stream(c, c->heif_item[idx]);
>> if (ret < 0)
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature.asc
Type: application/pgp-signature
Size: 495 bytes
Desc: OpenPGP digital signature
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20250717/46ca79b3/attachment.sig>
More information about the ffmpeg-devel
mailing list