CVS Root: /cvs/gstreamer
Module: gst-plugins-bad
Changes by: slomo
Date: Sat Nov 29 2008 20:25:20 UTC
Log message:
* gst/mxf/Makefile.am:
* gst/mxf/mxfdemux.c:
(gst_mxf_demux_handle_header_metadata_update_streams):
* gst/mxf/mxfjpeg2000.c: (mxf_is_jpeg2000_video_essence_track),
(mxf_jpeg2000_handle_essence_element), (mxf_jpeg2000_create_caps):
* gst/mxf/mxfjpeg2000.h:
Add initial support for JPEG2000 encoded video essence.
* gst/mxf/mxfparse.c:
(mxf_metadata_generic_picture_essence_descriptor_set_caps):
Set the framerate in the video caps.
Modified files:
. : ChangeLog
gst/mxf : Makefile.am mxfdemux.c mxfparse.c
Added files:
gst/mxf : mxfjpeg2000.c mxfjpeg2000.h
Links:
http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/ChangeLog.diff?r1=1.3765&r2=1.3766
http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/gst/mxf/Makefile.am.diff?r1=1.3&r2=1.4
http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/gst/mxf/mxfdemux.c.diff?r1=1.15&r2=1.16
http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/gst/mxf/mxfjpeg2000.c?rev=1.1&content-type=text/vnd.viewcvs-markup
http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/gst/mxf/mxfjpeg2000.h?rev=1.1&content-type=text/vnd.viewcvs-markup
http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/gst/mxf/mxfparse.c.diff?r1=1.12&r2=1.13
====Begin Diffs====
Index: ChangeLog
===================================================================
RCS file: /cvs/gstreamer/gst-plugins-bad/ChangeLog,v
retrieving revision 1.3765
retrieving revision 1.3766
diff -u -d -r1.3765 -r1.3766
--- ChangeLog 29 Nov 2008 20:07:10 -0000 1.3765
+++ ChangeLog 29 Nov 2008 20:25:04 -0000 1.3766
@@ -1,5 +1,19 @@
2008-11-29 Sebastian Dröge <[email protected]>
+ * gst/mxf/Makefile.am:
+ * gst/mxf/mxfdemux.c:
+ (gst_mxf_demux_handle_header_metadata_update_streams):
+ * gst/mxf/mxfjpeg2000.c: (mxf_is_jpeg2000_video_essence_track),
+ (mxf_jpeg2000_handle_essence_element), (mxf_jpeg2000_create_caps):
+ * gst/mxf/mxfjpeg2000.h:
+ Add initial support for JPEG2000 encoded video essence.
+
+ * gst/mxf/mxfparse.c:
+ (mxf_metadata_generic_picture_essence_descriptor_set_caps):
+ Set the framerate in the video caps.
+2008-11-29 Sebastian Dröge <[email protected]>
* ext/jp2k/gstjasperdec.c: (gst_jasper_dec_sink_setcaps):
Don't unref the element instance if we don't own a reference.
Index: Makefile.am
RCS file: /cvs/gstreamer/gst-plugins-bad/gst/mxf/Makefile.am,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- Makefile.am 28 Nov 2008 18:13:29 -0000 1.3
+++ Makefile.am 29 Nov 2008 20:25:05 -0000 1.4
@@ -7,7 +7,8 @@
mxfaes-bwf.c \
mxfmpeg.c \
mxfdv-dif.c \
- mxfalaw.c
+ mxfalaw.c \
+ mxfjpeg2000.c
libgstmxf_la_CFLAGS = $(GST_CFLAGS) $(GST_BASE_CFLAGS)
libgstmxf_la_LIBADD = $(GST_LIBS) $(GST_BASE_LIBS)
@@ -20,5 +21,6 @@
mxfmpeg.h \
mxfdv-dif.h \
mxfalaw.h \
+ mxfjpeg2000.h \
mxftypes.h
Index: mxfdemux.c
RCS file: /cvs/gstreamer/gst-plugins-bad/gst/mxf/mxfdemux.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- mxfdemux.c 28 Nov 2008 18:55:01 -0000 1.15
+++ mxfdemux.c 29 Nov 2008 20:25:05 -0000 1.16
@@ -19,7 +19,7 @@
/* TODO:
* - start at correct position of the component, switch components
- * - RandomIndex / IndexSegment support
+ * - seeking support
* - timecode tracks
* - descriptive metadata
* - generic container system items
@@ -35,6 +35,7 @@
#include "mxfmpeg.h"
#include "mxfdv-dif.h"
#include "mxfalaw.h"
+#include "mxfjpeg2000.h"
#include <string.h>
@@ -1292,8 +1293,9 @@
MXFMetadataEssenceContainerData, i);
for (j = 0; j < demux->content_storage.n_essence_container_data; j++) {
- if (mxf_ul_is_equal (&demux->content_storage.
- essence_container_data_uids[j], &data->instance_uid)) {
+ if (mxf_ul_is_equal (&demux->
+ content_storage.essence_container_data_uids[j],
+ &data->instance_uid)) {
demux->content_storage.essence_container_data[j] = data;
break;
}
@@ -1833,6 +1835,10 @@
caps =
mxf_dv_dif_create_caps (source_package, source_track,
&pad->tags, &pad->handle_essence_element, &pad->mapping_data);
+ else if (mxf_is_jpeg2000_video_essence_track (source_track))
+ caps =
+ mxf_jpeg2000_create_caps (source_package, source_track,
+ &pad->tags, &pad->handle_essence_element, &pad->mapping_data);
break;
case MXF_METADATA_TRACK_SOUND_ESSENCE:
if (mxf_is_aes_bwf_essence_track (source_track))
--- NEW FILE: mxfjpeg2000.c ---
/* GStreamer
* Copyright (C) 2008 Sebastian Dröge <[email protected]>
*
* 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.
*/
/* Implementation of SMPTE 422M - Mapping JPEG2000 codestreams into the MXF
* Generic Container
/* TODO:
* - parse the jpeg2000 sub-descriptor, see SMPTE 422M 7.2
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <gst/gst.h>
#include <string.h>
#include "mxfjpeg2000.h"
GST_DEBUG_CATEGORY_EXTERN (mxf_debug);
#define GST_CAT_DEFAULT mxf_debug
gboolean
mxf_is_jpeg2000_video_essence_track (const MXFMetadataTrack * track)
{
guint i;
g_return_val_if_fail (track != NULL, FALSE);
if (track->descriptor == NULL)
return FALSE;
for (i = 0; i < track->n_descriptor; i++) {
MXFMetadataFileDescriptor *d = track->descriptor[i];
MXFUL *key = &d->essence_container;
/* SMPTE 422M 5.4 */
if (mxf_is_generic_container_essence_container_label (key) &&
key->u[12] == 0x02 && key->u[13] == 0x0c &&
(key->u[14] == 0x01 || key->u[14] == 0x02))
return TRUE;
}
return FALSE;
}
static GstFlowReturn
mxf_jpeg2000_handle_essence_element (const MXFUL * key, GstBuffer * buffer,
GstCaps * caps, MXFMetadataGenericPackage * package,
MXFMetadataTrack * track, MXFMetadataStructuralComponent * component,
gpointer mapping_data, GstBuffer ** outbuf)
*outbuf = buffer;
/* SMPTE 422M 5.1 */
if (key->u[12] != 0x15 || (key->u[14] != 0x08 && key->u[14] != 0x09)) {
GST_ERROR ("Invalid JPEG2000 essence element");
return GST_FLOW_ERROR;
return GST_FLOW_OK;
GstCaps *
mxf_jpeg2000_create_caps (MXFMetadataGenericPackage * package,
MXFMetadataTrack * track, GstTagList ** tags,
MXFEssenceElementHandler * handler, gpointer * mapping_data)
MXFMetadataFileDescriptor *f = NULL;
MXFMetadataGenericPictureEssenceDescriptor *p = NULL;
GstCaps *caps = NULL;
g_return_val_if_fail (package != NULL, NULL);
g_return_val_if_fail (track != NULL, NULL);
if (track->descriptor == NULL) {
GST_ERROR ("No descriptor found for this track");
return NULL;
if (((MXFMetadataGenericDescriptor *) track->descriptor[i])->type ==
MXF_METADATA_GENERIC_PICTURE_ESSENCE_DESCRIPTOR ||
((MXFMetadataGenericDescriptor *) track->descriptor[i])->type ==
MXF_METADATA_RGBA_PICTURE_ESSENCE_DESCRIPTOR ||
MXF_METADATA_CDCI_PICTURE_ESSENCE_DESCRIPTOR) {
p = (MXFMetadataGenericPictureEssenceDescriptor *) track->descriptor[i];
f = track->descriptor[i];
break;
} else if (((MXFMetadataGenericDescriptor *) track->descriptor[i])->
is_file_descriptor
&& ((MXFMetadataGenericDescriptor *) track->descriptor[i])->type !=
MXF_METADATA_MULTIPLE_DESCRIPTOR) {
}
if (!f) {
*handler = mxf_jpeg2000_handle_essence_element;
caps = gst_caps_new_simple ("image/jp2", NULL);
if (p) {
mxf_metadata_generic_picture_essence_descriptor_set_caps (p, caps);
} else {
GST_WARNING ("Only a generic file descriptor found");
return caps;
--- NEW FILE: mxfjpeg2000.h ---
#ifndef __MXF_JPEG2000_H__
#define __MXF_JPEG2000_H__
#include "mxfparse.h"
gboolean mxf_is_jpeg2000_video_essence_track (const MXFMetadataTrack *track);
mxf_jpeg2000_create_caps (MXFMetadataGenericPackage *package, MXFMetadataTrack *track, GstTagList **tags, MXFEssenceElementHandler *handler, gpointer *mapping_data);
#endif /* __MXF_JPEG2000_H__ */
Index: mxfparse.c
RCS file: /cvs/gstreamer/gst-plugins-bad/gst/mxf/mxfparse.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- mxfparse.c 28 Nov 2008 11:24:23 -0000 1.12
+++ mxfparse.c 29 Nov 2008 20:25:06 -0000 1.13
@@ -2582,10 +2582,14 @@
{
guint par_n, par_d;
guint width, height;
+ MXFMetadataFileDescriptor *f = (MXFMetadataFileDescriptor *) descriptor;
g_return_if_fail (descriptor != NULL);
g_return_if_fail (GST_IS_CAPS (caps));
+ gst_caps_set_simple (caps, "framerate", GST_TYPE_FRACTION, f->sample_rate.n,
+ f->sample_rate.d, NULL);
width = descriptor->stored_width;
height = descriptor->stored_height;
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
gstreamer-cvs-verbose mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gstreamer-cvs-verbose
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.