[Bug 746109] New: qtdemux: Support for gapless playback for .m4a files

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Thu Mar 12 12:30:39 PDT 2015


https://bugzilla.gnome.org/show_bug.cgi?id=746109

            Bug ID: 746109
           Summary: qtdemux: Support for gapless playback for .m4a files
    Classification: Platform
           Product: GStreamer
           Version: git master
                OS: Linux
            Status: NEW
          Severity: enhancement
          Priority: Normal
         Component: gst-plugins-good
          Assignee: gstreamer-bugs at lists.freedesktop.org
          Reporter: dv at pseudoterminal.org
        QA Contact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---

Hello,

I am currently investigating how to enable gapless playback for .m4a files.
>From what I gathered, the primary way is to read out the information from the
iTunSMPB tag. If it is not present, the Nero method can be used/assumed as
fallback (which is, drop the first frame, usually 1024 samples for AAC LC).

The former has been introduced by Apple for iTunes. The latter is commonly done
by FAAC/FAAD and Nero AAC software.

Looking at the qtdemux code, one approach that seems promising is to modify the
segment in gst_qtdemux_activate_segment() prior to sending the newsegment
event. That is, the data in stream->segment would *not* be modified; instead,
the segment structure would be copied, the copy modified, and passed over to
gst_event_new_segment(). This way, downstream sees a segment with the
base/start/stop/duration values adjusted to exclude the padding samples. (The
reason why this is done in a local copy is to prevent early buffer clipping in
qtdemux itself; clipping needs to be applied on the decoded samples).

I'll come up with a patch that implement it and post it here, but in the
meantime, if somebody knows a good reason why it shouldn't be done like that,
it would be great to hear about it.

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list