283088101c78ca9f94498e72e1081a91ad4a77da
[glsdk/gst-plugins-ugly0-10.git] / gst / asfdemux / asfpacket.h
1 /* GStreamer ASF/WMV/WMA demuxer
2  * Copyright (C) 2007 Tim-Philipp Müller <tim centricular net>
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Library General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Library General Public License for more details.
13  *
14  * You should have received a copy of the GNU Library General Public
15  * License along with this library; if not, write to the
16  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17  * Boston, MA 02111-1307, USA.
18  */
20 #ifndef __ASF_PACKET_H__
21 #define __ASF_PACKET_H__
23 #include <gst/gstbuffer.h>
24 #include <gst/gstclock.h>
26 #include "gstasfdemux.h"
28 G_BEGIN_DECLS
30 typedef struct {
31   gboolean      keyframe;          /* buffer flags might not survive merge.. */
32   guint         mo_number;         /* media object number (unused)           */
33   guint         mo_offset;         /* offset (timestamp for compressed data) */
34   guint         mo_size;           /* size of media-object-to-be, or 0       */
35   guint         rep_data_len;      /* should never be more than 256, since   */
36   guint8        rep_data[256];     /* the length should be stored in a byte  */
37   GstClockTime  ts;
38   GstClockTime  duration;          /* is not always available                */
39   guint8        par_x;             /* not always available (0:deactivated)   */
40   guint8        par_y;             /* not always available (0:deactivated)   */
41   gboolean      interlaced;        /* default: FALSE */
42   gboolean      tff;
43   gboolean      rff;
44   GstBuffer    *buf;
45 } AsfPayload;
47 typedef struct {
48   GstBuffer    *buf;
49   guint         length;            /* packet length (unused)               */
50   guint         padding;           /* length of padding at end of packet   */
51   guint         sequence;          /* sequence (unused)                    */
52   GstClockTime  send_time;
53   GstClockTime  duration;
55   guint8        prop_flags;        /* payload length types                 */
56 } AsfPacket;
58 gboolean   gst_asf_demux_parse_packet (GstASFDemux * demux, GstBuffer * buf);
60 #define gst_asf_payload_is_complete(payload) \
61     (GST_BUFFER_SIZE ((payload)->buf) >= (payload)->mo_size)
63 G_END_DECLS
65 #endif /* __ASF_PACKET_H__ */