gstreamer/gst/rtp/gstrtpj2kdepay.h
Wim Taymans 6729a3b79c j2kdepay: make the depayloader more resilient
Use 3 adapters, one to accumulate paketization units, another on to accumulate
tiles and a last one to accumulate the final frame.
Don't just blindly flush the adapter on DISCONT but only discard the current
packetization unit.
When we dropped jpeg2000 packets between SOP markers, adjust the SOT header with
the new lenght.
2010-12-09 18:18:24 +01:00

76 lines
2.1 KiB
C

/* GStreamer
* Copyright (C) <2009> Wim Taymans <wim.taymans@gmail.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#ifndef __GST_RTP_J2K_DEPAY_H__
#define __GST_RTP_J2K_DEPAY_H__
#include <gst/gst.h>
#include <gst/base/gstadapter.h>
#include <gst/rtp/gstbasertpdepayload.h>
G_BEGIN_DECLS
#define GST_TYPE_RTP_J2K_DEPAY \
(gst_rtp_j2k_depay_get_type())
#define GST_RTP_J2K_DEPAY(obj) \
(G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_RTP_J2K_DEPAY,GstRtpJ2KDepay))
#define GST_RTP_J2K_DEPAY_CLASS(klass) \
(G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_RTP_J2K_DEPAY,GstRtpJ2KDepayClass))
#define GST_IS_RTP_J2K_DEPAY(obj) \
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_RTP_J2K_DEPAY))
#define GST_IS_RTP_J2K_DEPAY_CLASS(klass) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RTP_J2K_DEPAY))
typedef struct _GstRtpJ2KDepay GstRtpJ2KDepay;
typedef struct _GstRtpJ2KDepayClass GstRtpJ2KDepayClass;
struct _GstRtpJ2KDepay
{
GstBaseRTPDepayload depayload;
guint64 last_rtptime;
guint last_mh_id;
guint last_tile;
GstBuffer *MH[8];
guint pu_MHF;
GstAdapter *pu_adapter;
GstAdapter *t_adapter;
GstAdapter *f_adapter;
guint next_frag;
gboolean have_sync;
gint width, height;
};
struct _GstRtpJ2KDepayClass
{
GstBaseRTPDepayloadClass parent_class;
};
GType gst_rtp_j2k_depay_get_type (void);
gboolean gst_rtp_j2k_depay_plugin_init (GstPlugin * plugin);
G_END_DECLS
#endif /* __GST_RTP_J2K_DEPAY_H__ */