[gstreamer-bugs] [Bug 343519] New: [rmdemux] Stripped valuable data for decoding?

GStreamer (bugzilla.gnome.org) bugzilla-daemon at bugzilla.gnome.org
Wed May 31 09:09:42 PDT 2006


Do not reply to this via email (we are currently unable to handle email
responses and they get discarded).  You can add comments to this bug at
http://bugzilla.gnome.org/show_bug.cgi?id=343519
 GStreamer | gst-plugins-ugly | Ver: 0.10.3

           Summary: [rmdemux] Stripped valuable data for decoding?
           Product: GStreamer
           Version: 0.10.3
          Platform: Other
        OS/Version: All
            Status: UNCONFIRMED
          Severity: normal
          Priority: Normal
         Component: gst-plugins-ugly
        AssignedTo: gstreamer-bugs at lists.sourceforge.net
        ReportedBy: mozbugbox at yahoo.com.au
         QAContact: gstreamer-bugs at lists.sourceforge.net
     GNOME version: Unspecified
   GNOME milestone: Unspecified


Please describe the problem:
It seems that the packet data in gst_rmdemux_parse_packet() was stripped before
passing to the pad. 

In Mplayer, libmpcodecs/vd_realvid.c, decode() shows that the header is also
needed to prepor decode realvideo codec:


// copypaste from demux_real.c - it should match to get it working!
typedef struct dp_hdr_s {
    uint32_t chunks;    // number of chunks
    uint32_t timestamp; // timestamp from packet header
    uint32_t len;       // length of actual data
    uint32_t chunktab;  // offset to chunk offset array
} dp_hdr_t;

// decode a frame
static mp_image_t* decode(sh_video_t *sh,void* data,int len,int flags){
        mp_image_t* mpi;
        unsigned long result;
        dp_hdr_t* dp_hdr=(dp_hdr_t*)data;
        unsigned char* dp_data=((unsigned char*)data)+sizeof(dp_hdr_t);
        uint32_t* extra=(uint32_t*)(((char*)data)+dp_hdr->chunktab);
        unsigned char* buffer;

        unsigned int transform_out[5];
        transform_in_t transform_in={
                dp_hdr->len,    // length of the packet (sub-packets appended)
                0,              // unknown, seems to be unused
                dp_hdr->chunks, // number of sub-packets - 1
                extra,          // table of sub-packet offsets
                0,              // unknown, seems to be unused
                dp_hdr->timestamp,// timestamp (the integer value from the
stream)
        };

....

                result=(*rvyuv_transform)(dp_data, buffer, &transform_in,
                transform_out, sh->context);



Steps to reproduce:
1. 
2. 
3. 


Actual results:


Expected results:
Maybe the packet header should be passed along in some cap field. Since other
demux also handle realmedia codec (like matroska demuxer), what's the proper
way to unify all the demuxers?

matroska demuxer has other problems like don't pass along 'format' and
'subformat' and codec_data to _setcap.


Does this happen every time?


Other information:


-- 
Configure bugmail: http://bugzilla.gnome.org/userprefs.cgi?tab=email
------- 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