summaryrefslogtreecommitdiff
path: root/gst/qtmux/gstqtmux.h
diff options
context:
space:
mode:
Diffstat (limited to 'gst/qtmux/gstqtmux.h')
-rw-r--r--gst/qtmux/gstqtmux.h228
1 files changed, 0 insertions, 228 deletions
diff --git a/gst/qtmux/gstqtmux.h b/gst/qtmux/gstqtmux.h
deleted file mode 100644
index 3a2cb492f..000000000
--- a/gst/qtmux/gstqtmux.h
+++ /dev/null
@@ -1,228 +0,0 @@
-/* Quicktime muxer plugin for GStreamer
- * Copyright (C) 2008-2010 Thiago Santos <thiagoss@embedded.ufcg.edu.br>
- *
- * 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.
- */
-/*
- * Unless otherwise indicated, Source Code is licensed under MIT license.
- * See further explanation attached in License Statement (distributed in the file
- * LICENSE).
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy of
- * this software and associated documentation files (the "Software"), to deal in
- * the Software without restriction, including without limitation the rights to
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#ifndef __GST_QT_MUX_H__
-#define __GST_QT_MUX_H__
-
-#include <gst/gst.h>
-#include <gst/base/gstcollectpads.h>
-
-#include "fourcc.h"
-#include "atoms.h"
-#include "atomsrecovery.h"
-#include "gstqtmuxmap.h"
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_QT_MUX (gst_qt_mux_get_type())
-#define GST_QT_MUX(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_QT_MUX, GstQTMux))
-#define GST_QT_MUX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_QT_MUX, GstQTMux))
-#define GST_IS_QT_MUX(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_QT_MUX))
-#define GST_IS_QT_MUX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_QT_MUX))
-#define GST_QT_MUX_CAST(obj) ((GstQTMux*)(obj))
-
-
-typedef struct _GstQTMux GstQTMux;
-typedef struct _GstQTMuxClass GstQTMuxClass;
-typedef struct _GstQTPad GstQTPad;
-
-/*
- * GstQTPadPrepareBufferFunc
- *
- * Receives a buffer (takes ref) and returns a new buffer that should
- * replace the passed one.
- *
- * Useful for when the pad/datatype needs some manipulation before
- * being muxed. (Originally added for image/x-jpc support, for which buffers
- * need to be wrapped into a isom box)
- */
-typedef GstBuffer * (*GstQTPadPrepareBufferFunc) (GstQTPad * pad,
- GstBuffer * buf, GstQTMux * qtmux);
-
-#define QTMUX_NO_OF_TS 10
-
-struct _GstQTPad
-{
- GstCollectData collect; /* we extend the CollectData */
-
- /* fourcc id of stream */
- guint32 fourcc;
- /* whether using format that have out of order buffers */
- gboolean is_out_of_order;
- /* whether upstream provides valid PTS data */
- gboolean have_dts;
- /* if not 0, track with constant sized samples, e.g. raw audio */
- guint sample_size;
- /* make sync table entry */
- gboolean sync;
- /* bitrates */
- guint32 avg_bitrate, max_bitrate;
-
- GstBuffer *last_buf;
- /* dts of last_buf */
- GstClockTime last_dts;
-
- /* store the first timestamp for comparing with other streams and
- * know if there are late streams */
- GstClockTime first_ts;
- GstClockTime ts_entries[QTMUX_NO_OF_TS + 2];
- guint ts_n_entries;
- GstBuffer *buf_entries[QTMUX_NO_OF_TS + 2];
- guint buf_head;
- guint buf_tail;
-
- /* all the atom and chunk book-keeping is delegated here
- * unowned/uncounted reference, parent MOOV owns */
- AtomTRAK *trak;
- /* fragmented support */
- /* meta data book-keeping delegated here */
- AtomTRAF *traf;
- /* fragment buffers */
- ATOM_ARRAY (GstBuffer *) fragment_buffers;
- /* running fragment duration */
- gint64 fragment_duration;
- /* optional fragment index book-keeping */
- AtomTFRA *tfra;
-
- /* if nothing is set, it won't be called */
- GstQTPadPrepareBufferFunc prepare_buf_func;
-};
-
-typedef enum _GstQTMuxState
-{
- GST_QT_MUX_STATE_NONE,
- GST_QT_MUX_STATE_STARTED,
- GST_QT_MUX_STATE_DATA,
- GST_QT_MUX_STATE_EOS
-} GstQTMuxState;
-
-struct _GstQTMux
-{
- GstElement element;
-
- GstPad *srcpad;
- GstCollectPads *collect;
- GSList *sinkpads;
-
- /* state */
- GstQTMuxState state;
-
- /* size of header (prefix, atoms (ftyp, mdat)) */
- guint64 header_size;
- /* accumulated size of raw media data (a priori not including mdat header) */
- guint64 mdat_size;
- /* position of mdat atom (for later updating) */
- guint64 mdat_pos;
-
- /* keep track of the largest chunk to fine-tune brands */
- GstClockTime longest_chunk;
-
- /* atom helper objects */
- AtomsContext *context;
- AtomFTYP *ftyp;
- AtomMOOV *moov;
- GSList *extra_atoms; /* list of extra top-level atoms (e.g. UUID for xmp)
- * Stored as AtomInfo structs */
-
- /* fragmented file index */
- AtomMFRA *mfra;
-
- /* fast start */
- FILE *fast_start_file;
-
- /* moov recovery */
- FILE *moov_recov_file;
-
- /* fragment sequence */
- guint32 fragment_sequence;
-
- /* properties */
- guint32 timescale;
- guint32 trak_timescale;
- AtomsTreeFlavor flavor;
- gboolean fast_start;
- gboolean guess_pts;
- gint dts_method;
- gchar *fast_start_file_path;
- gchar *moov_recov_file_path;
- guint32 fragment_duration;
- gboolean streamable;
-
- /* for collect pads event handling function */
- GstPadEventFunction collect_event;
-
- /* for request pad naming */
- guint video_pads, audio_pads;
-};
-
-struct _GstQTMuxClass
-{
- GstElementClass parent_class;
-
- GstQTMuxFormat format;
-};
-
-/* type register helper struct */
-typedef struct _GstQTMuxClassParams
-{
- GstQTMuxFormatProp *prop;
- GstCaps *src_caps;
- GstCaps *video_sink_caps;
- GstCaps *audio_sink_caps;
-} GstQTMuxClassParams;
-
-#define GST_QT_MUX_PARAMS_QDATA g_quark_from_static_string("qt-mux-params")
-
-GType gst_qt_mux_get_type (void);
-gboolean gst_qt_mux_register (GstPlugin * plugin);
-
-/* FIXME: ideally classification tag should be added and
- * registered in gstreamer core gsttaglist
- *
- * this tag is a string in the format: entityfourcc://table_num/content
- * FIXME Shouldn't we add a field for 'language'?
- */
-#define GST_TAG_3GP_CLASSIFICATION "classification"
-
-G_END_DECLS
-
-#endif /* __GST_QT_MUX_H__ */