Closed Bug 1343793 Opened 8 years ago Closed 8 years ago

Presentation time is odd in dom/media/test/test_eme_non_mse_fails.html

Categories

(Core :: Audio/Video: Playback, defect)

defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla55
Tracking Status
firefox55 --- fixed

People

(Reporter: ayang, Assigned: ayang)

References

Details

Attachments

(2 files)

Rust mp4 parser gets presentation time mismatches comparing to stagefright in test_eme_non_mse_fails.html. I found the first and second sample time are odd in stagefright. It should be a negative value due to presentation shift in 'elst' box. The 'elst' box is: EditListBox { edits: [Edit { segment_duration: 441, media_time: 1600, media_rate_integer: 1, media_rate_fraction: 0 }] } [MediaPDecoder #2]: I/MP4Metadata Preferring rust demuxer [MediaPDecoder #2]: W/MP4Metadata media time is 36281 [MediaPDecoder #2]: W/MP4Metadata media time is 36281 [MediaPDecoder #2]: D/MP4Metadata track codec aac (1) [MediaPDecoder #2]: D/MP4Metadata s_o: 6992, e_o: 7363, s_c: 18446744073709515335, e_c: 18446744073709538554, s_d: 0, sync: 1 [MediaPDecoder #2]: D/MP4Metadata s_o: 7363, e_o: 7735, s_c: 18446744073709538554, e_c: 10158, s_d: 23219, sync: 1 [MediaPDecoder #2]: D/MP4Metadata s_o: 7735, e_o: 8106, s_c: 10158, e_c: 33378, s_d: 46439, sync: 1 [MediaPDecoder #2]: D/MP4Metadata s_o: 8106, e_o: 8478, s_c: 33378, e_c: 56598, s_d: 69659, sync: 1 [MediaPDecoder #2]: D/MP4Metadata s_o: 8478, e_o: 8849, s_c: 56598, e_c: 79818, s_d: 92879, sync: 1 [MediaPDecoder #2]: D/MP4Metadata s_o: 8849, e_o: 9221, s_c: 79818, e_c: 103038, s_d: 116099, sync: 1 [MediaPDecoder #2]: D/MP4Metadata s_o: 9221, e_o: 9592, s_c: 103038, e_c: 126258, s_d: 139319, sync: 1 [MediaPDecoder #2]: D/MP4Metadata s_o: 9592, e_o: 9964, s_c: 126258, e_c: 149478, s_d: 162539, sync: 1 In MediaData, mTime is i64 [1], so it must be somewhere they convert it from u64. [1] https://dxr.mozilla.org/mozilla-central/rev/e150eaff1f83e4e4a97d1e30c57d233859efe9cb/dom/media/MediaData.h#311
Assignee: nobody → ayang
Blocks: 1161350
It converts to i64 here [1]. So I think I'll change composition time from u64 to i64 in mp4parse_indice. [1] https://dxr.mozilla.org/mozilla-central/rev/e150eaff1f83e4e4a97d1e30c57d233859efe9cb/media/libstagefright/binding/Index.cpp#101
Comment on attachment 8843167 [details] Bug 1343793 - use i64 instead of u64 in presentation time. https://reviewboard.mozilla.org/r/116928/#review119018 ::: media/libstagefright/binding/MP4Metadata.cpp:353 (Diff revision 1) > for (uint32_t i = 0; i < data.length; i++) { > MOZ_DIAGNOSTIC_ASSERT(data.indices[i].start_offset == aDest[i].start_offset); > MOZ_DIAGNOSTIC_ASSERT(data.indices[i].end_offset == aDest[i].end_offset); > - MOZ_DIAGNOSTIC_ASSERT(llabs(int64_t(data.indices[i].start_composition - aDest[i].start_composition)) <= 1); > - MOZ_DIAGNOSTIC_ASSERT(llabs(int64_t(data.indices[i].end_composition - aDest[i].end_composition)) <= 1); > - MOZ_DIAGNOSTIC_ASSERT(llabs(int64_t(data.indices[i].start_decode - aDest[i].start_decode)) <= 1); > + MOZ_DIAGNOSTIC_ASSERT(llabs((data.indices[i].start_composition - (int64_t)aDest[i].start_composition)) <= 1); > + MOZ_DIAGNOSTIC_ASSERT(llabs((data.indices[i].end_composition - (int64_t)aDest[i].end_composition)) <= 1); > + MOZ_DIAGNOSTIC_ASSERT(llabs((data.indices[i].start_decode - (int64_t)aDest[i].start_decode)) <= 1); Use C++-style int64_t(aDest[i].start_decode) casts.
Attachment #8843167 - Flags: review?(kinetik) → review+
Attachment #8844718 - Flags: review?(kinetik) → review+
Pushed by ayang@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/fdbfc2cba91f use i64 instead of u64 in presentation time. r=kinetik https://hg.mozilla.org/integration/autoland/rev/6644decaf685 update rust mp4parser. r=kinetik
Status: NEW → RESOLVED
Closed: 8 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla55
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: