mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-11 01:45:33 +00:00
flvmux: add some comments and defines to clarify code.
This commit is contained in:
parent
1b213d905a
commit
f6255bb8d0
2 changed files with 57 additions and 12 deletions
44
gst/flv/amfdefs.h
Normal file
44
gst/flv/amfdefs.h
Normal file
|
@ -0,0 +1,44 @@
|
|||
/* GStreamer
|
||||
*
|
||||
* Copyright (c) 2011 Jan Schmidt <thaytan@noraisin.net>
|
||||
*
|
||||
* 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 __AMFDEFS_H__
|
||||
#define __AMFDEFS_H__
|
||||
|
||||
#include <glib.h>
|
||||
|
||||
#define AMF0_NUMBER_MARKER 0x0
|
||||
#define AMF0_BOOLEAN_MARKER 0x1
|
||||
#define AMF0_STRING_MARKER 0x2
|
||||
#define AMF0_OBJECT_MARKER 0x3
|
||||
#define AMF0_MOVIECLIP_MARKER 0x4 // Reserved, not supported
|
||||
#define AMF0_NULL_MARKER 0x5
|
||||
#define AMF0_UNDEFINED_MARKER 0x6
|
||||
#define AMF0_REFERENCE_MARKER 0x7
|
||||
#define AMF0_ECMA_ARRAY_MARKER 0x8
|
||||
#define AMF0_OBJECT_END_MARKER 0x9
|
||||
#define AMF0_STRICT_ARRAY_MARKER 0xA
|
||||
#define AMF0_DATE_MARKER 0xB
|
||||
#define AMF0_LONG_STRING_MARKER 0xC
|
||||
#define AMF0_UNSUPPORTED_MARKER 0xD
|
||||
#define AMF0_RECORDSET_MARKER 0xE // Reserved, not supported
|
||||
#define AMF0_XML_DOCUMENT_MARKER 0xF
|
||||
#define AMF0_TYPED_OBJECT_MARKER 0x10
|
||||
|
||||
#endif
|
|
@ -39,6 +39,7 @@
|
|||
#include <string.h>
|
||||
|
||||
#include "gstflvmux.h"
|
||||
#include "amfdefs.h"
|
||||
|
||||
GST_DEBUG_CATEGORY_STATIC (flvmux_debug);
|
||||
#define GST_CAT_DEFAULT flvmux_debug
|
||||
|
@ -624,7 +625,7 @@ gst_flv_mux_preallocate_index (GstFlvMux * mux)
|
|||
/* prefill the space with a gstfiller: <spaces> script tag variable */
|
||||
GST_WRITE_UINT16_BE (data, 9); /* 9 characters */
|
||||
memcpy (data + 2, "gstfiller", 9);
|
||||
GST_WRITE_UINT8 (data + 11, 2); /* a string value */
|
||||
GST_WRITE_UINT8 (data + 11, AMF0_STRING_MARKER); /* a string value */
|
||||
GST_WRITE_UINT16_BE (data + 12, preallocate_size - 14);
|
||||
memset (data + 14, ' ', preallocate_size - 14); /* the rest is spaces */
|
||||
return tmp;
|
||||
|
@ -635,11 +636,14 @@ gst_flv_mux_create_number_script_value (const gchar * name, gdouble value)
|
|||
{
|
||||
GstBuffer *tmp = gst_buffer_new_and_alloc (2 + strlen (name) + 1 + 8);
|
||||
guint8 *data = GST_BUFFER_DATA (tmp);
|
||||
gsize len = strlen (name);
|
||||
|
||||
GST_WRITE_UINT16_BE (data, strlen (name)); /* name length */
|
||||
memcpy (&data[2], name, strlen (name));
|
||||
data[2 + strlen (name)] = 0; /* double */
|
||||
GST_WRITE_DOUBLE_BE (data + 2 + strlen (name) + 1, value);
|
||||
GST_WRITE_UINT16_BE (data, len);
|
||||
data += 2; /* name length */
|
||||
memcpy (data, name, len);
|
||||
data += len;
|
||||
*data++ = AMF0_NUMBER_MARKER; /* double type */
|
||||
GST_WRITE_DOUBLE_BE (data, value);
|
||||
|
||||
return tmp;
|
||||
}
|
||||
|
@ -674,7 +678,7 @@ gst_flv_mux_create_metadata (GstFlvMux * mux)
|
|||
|
||||
tmp = gst_buffer_new_and_alloc (13);
|
||||
data = GST_BUFFER_DATA (tmp);
|
||||
data[0] = 2; /* string */
|
||||
data[0] = AMF0_STRING_MARKER; /* string */
|
||||
data[1] = 0;
|
||||
data[2] = 10; /* length 10 */
|
||||
memcpy (&data[3], "onMetaData", 10);
|
||||
|
@ -694,17 +698,14 @@ gst_flv_mux_create_metadata (GstFlvMux * mux)
|
|||
tmp = gst_flv_mux_create_number_script_value ("duration", 86400);
|
||||
script_tag = gst_buffer_join (script_tag, tmp);
|
||||
tags_written++;
|
||||
}
|
||||
|
||||
/* Sometimes the information about the total file size is useful for the
|
||||
player. It will be filled later, after getting EOS */
|
||||
if (!mux->streamable) {
|
||||
tmp = gst_flv_mux_create_number_script_value ("filesize", 0);
|
||||
script_tag = gst_buffer_join (script_tag, tmp);
|
||||
tags_written++;
|
||||
}
|
||||
|
||||
if (!mux->streamable) {
|
||||
/* Preallocate space for the index to be written at EOS */
|
||||
tmp = gst_flv_mux_preallocate_index (mux);
|
||||
script_tag = gst_buffer_join (script_tag, tmp);
|
||||
} else {
|
||||
|
|
Loading…
Reference in a new issue