summaryrefslogtreecommitdiffstats
path: root/ext
diff options
context:
space:
mode:
authorThomas Vander Stichele <thomas (at) apestaart (dot) org>2009-03-02 09:43:30 +0100
committerThomas Vander Stichele <thomas (at) apestaart (dot) org>2009-03-02 09:43:30 +0100
commit9f25f96155b246663a1f900624ccda4b9eafcded (patch)
tree029a4a4e8e96dc27e5f3ba38615bcfe9bee64455 /ext
parent13221762d09f8faacfbd682e68500ff22e6eb8ab (diff)
parent0083b9e40569db889500a3c1abd7ec3ac8876fee (diff)
Merge branch 'master' of ssh://thomasvs@git.freedesktop.org/git/gstreamer/gst-plugins-good
Diffstat (limited to 'ext')
-rw-r--r--ext/dv/gstdvdec.c10
-rw-r--r--ext/dv/gstdvdec.h1
-rw-r--r--ext/gconf/Makefile.am4
-rw-r--r--ext/gconf/gstgconf.c (renamed from ext/gconf/gconf.c)2
-rw-r--r--ext/gconf/gstgconf.h (renamed from ext/gconf/gconf.h)0
-rw-r--r--ext/gconf/gstgconfelements.h2
-rw-r--r--ext/gconf/gstgconfvideosink.c5
-rw-r--r--ext/gconf/gstgconfvideosink.h3
-rw-r--r--ext/gconf/gstgconfvideosrc.c5
-rw-r--r--ext/gconf/gstgconfvideosrc.h3
-rw-r--r--ext/jpeg/gstjpegenc.c18
-rw-r--r--ext/jpeg/gstjpegenc.h1
-rw-r--r--ext/pulse/pulsemixerctrl.c21
-rw-r--r--ext/raw1394/gsthdv1394src.c2
14 files changed, 55 insertions, 22 deletions
diff --git a/ext/dv/gstdvdec.c b/ext/dv/gstdvdec.c
index ade97966..550b99d1 100644
--- a/ext/dv/gstdvdec.c
+++ b/ext/dv/gstdvdec.c
@@ -43,6 +43,7 @@
#endif
#include <string.h>
#include <math.h>
+#include <gst/video/video.h>
#include "gstdvdec.h"
@@ -328,7 +329,7 @@ gst_dvdec_src_negotiate (GstDVDec * dvdec)
"framerate", GST_TYPE_FRACTION, dvdec->framerate_numerator,
dvdec->framerate_denominator,
"pixel-aspect-ratio", GST_TYPE_FRACTION, dvdec->par_x,
- dvdec->par_y, NULL);
+ dvdec->par_y, "interlaced", G_TYPE_BOOLEAN, dvdec->interlaced, NULL);
gst_pad_set_caps (dvdec->srcpad, othercaps);
gst_caps_unref (othercaps);
@@ -434,6 +435,7 @@ gst_dvdec_chain (GstPad * pad, GstBuffer * buf)
dvdec->height = (dvdec->PAL ? PAL_HEIGHT : NTSC_HEIGHT);
+ dvdec->interlaced = !dv_is_progressive (dvdec->decoder);
/* negotiate if not done yet */
if (!dvdec->src_negotiated) {
@@ -466,6 +468,12 @@ gst_dvdec_chain (GstPad * pad, GstBuffer * buf)
dv_decode_full_frame (dvdec->decoder, inframe,
e_dv_color_yuv, outframe_ptrs, outframe_pitches);
+ if (dvdec->PAL) {
+ GST_BUFFER_FLAG_SET (outbuf, GST_VIDEO_BUFFER_TFF);
+ } else {
+ GST_BUFFER_FLAG_UNSET (outbuf, GST_VIDEO_BUFFER_TFF);
+ }
+
GST_BUFFER_OFFSET (outbuf) = GST_BUFFER_OFFSET (buf);
GST_BUFFER_OFFSET_END (outbuf) = GST_BUFFER_OFFSET_END (buf);
GST_BUFFER_TIMESTAMP (outbuf) = cstart;
diff --git a/ext/dv/gstdvdec.h b/ext/dv/gstdvdec.h
index 5f166a14..de8481d9 100644
--- a/ext/dv/gstdvdec.h
+++ b/ext/dv/gstdvdec.h
@@ -57,6 +57,7 @@ struct _GstDVDec {
gint quality;
gboolean PAL;
+ gboolean interlaced;
gboolean wide;
gint frame_len;
diff --git a/ext/gconf/Makefile.am b/ext/gconf/Makefile.am
index 4f6f63ad..330cf29f 100644
--- a/ext/gconf/Makefile.am
+++ b/ext/gconf/Makefile.am
@@ -7,7 +7,7 @@ libgstgconfelements_la_SOURCES = \
gstgconfvideosink.c \
gstgconfvideosrc.c \
gstswitchsink.c \
- gconf.c
+ gstgconf.c
DIR_CFLAGS = -DGST_GCONF_DIR=\"/system/gstreamer/@GST_MAJORMINOR@\"
libgstgconfelements_la_CFLAGS = $(GST_CFLAGS) $(GCONF_CFLAGS) $(DIR_CFLAGS)
@@ -22,4 +22,4 @@ noinst_HEADERS = \
gstgconfvideosink.h \
gstgconfvideosrc.h \
gstswitchsink.h \
- gconf.h
+ gstgconf.h
diff --git a/ext/gconf/gconf.c b/ext/gconf/gstgconf.c
index e7214e2d..eee80c9d 100644
--- a/ext/gconf/gconf.c
+++ b/ext/gconf/gstgconf.c
@@ -29,7 +29,7 @@
#include <gst/gst.h>
-#include "gconf.h"
+#include "gstgconf.h"
#include "gstgconfelements.h" /* for debug category */
#ifndef GST_GCONF_DIR
diff --git a/ext/gconf/gconf.h b/ext/gconf/gstgconf.h
index b1153e93..b1153e93 100644
--- a/ext/gconf/gconf.h
+++ b/ext/gconf/gstgconf.h
diff --git a/ext/gconf/gstgconfelements.h b/ext/gconf/gstgconfelements.h
index 1b3efe3c..872b2f2d 100644
--- a/ext/gconf/gstgconfelements.h
+++ b/ext/gconf/gstgconfelements.h
@@ -20,7 +20,7 @@
#ifndef __GST_GCONF_ELEMENTS_H__
#define __GST_GCONF_ELEMENTS_H__
-#include <gconf.h>
+#include "gstgconf.h"
GST_DEBUG_CATEGORY_EXTERN (gconf_debug);
#define GST_CAT_DEFAULT gconf_debug
diff --git a/ext/gconf/gstgconfvideosink.c b/ext/gconf/gstgconfvideosink.c
index 4090cc91..1b05fd37 100644
--- a/ext/gconf/gstgconfvideosink.c
+++ b/ext/gconf/gstgconfvideosink.c
@@ -122,7 +122,7 @@ gst_gconf_video_sink_init (GstGConfVideoSink * sink,
sink->client = gconf_client_get_default ();
gconf_client_add_dir (sink->client, GST_GCONF_DIR,
GCONF_CLIENT_PRELOAD_RECURSIVE, NULL);
- gconf_client_notify_add (sink->client,
+ sink->notify_id = gconf_client_notify_add (sink->client,
GST_GCONF_DIR "/" GST_GCONF_VIDEOSINK_KEY,
cb_toggle_element, sink, NULL, NULL);
}
@@ -133,6 +133,9 @@ gst_gconf_video_sink_dispose (GObject * object)
GstGConfVideoSink *sink = GST_GCONF_VIDEO_SINK (object);
if (sink->client) {
+ if (sink->notify_id != 0)
+ gconf_client_notify_remove (sink->client, sink->notify_id);
+
g_object_unref (G_OBJECT (sink->client));
sink->client = NULL;
}
diff --git a/ext/gconf/gstgconfvideosink.h b/ext/gconf/gstgconfvideosink.h
index 8f69c81a..2461e652 100644
--- a/ext/gconf/gstgconfvideosink.h
+++ b/ext/gconf/gstgconfvideosink.h
@@ -46,6 +46,9 @@ typedef struct _GstGConfVideoSink {
GstElement *kid;
GstPad *pad;
+ /* gconf notify id */
+ guint notify_id;
+
/* Current gconf string */
gchar *gconf_str;
} GstGConfVideoSink;
diff --git a/ext/gconf/gstgconfvideosrc.c b/ext/gconf/gstgconfvideosrc.c
index fe177d86..6192d73d 100644
--- a/ext/gconf/gstgconfvideosrc.c
+++ b/ext/gconf/gstgconfvideosrc.c
@@ -124,7 +124,7 @@ gst_gconf_video_src_init (GstGConfVideoSrc * src,
src->client = gconf_client_get_default ();
gconf_client_add_dir (src->client, GST_GCONF_DIR,
GCONF_CLIENT_PRELOAD_RECURSIVE, NULL);
- gconf_client_notify_add (src->client,
+ src->notify_id = gconf_client_notify_add (src->client,
GST_GCONF_DIR "/" GST_GCONF_VIDEOSRC_KEY,
cb_toggle_element, src, NULL, NULL);
}
@@ -135,6 +135,9 @@ gst_gconf_video_src_dispose (GObject * object)
GstGConfVideoSrc *src = GST_GCONF_VIDEO_SRC (object);
if (src->client) {
+ if (src->notify_id != 0)
+ gconf_client_notify_remove (src->client, src->notify_id);
+
g_object_unref (G_OBJECT (src->client));
src->client = NULL;
}
diff --git a/ext/gconf/gstgconfvideosrc.h b/ext/gconf/gstgconfvideosrc.h
index 6f64e6d1..4a2c8cdd 100644
--- a/ext/gconf/gstgconfvideosrc.h
+++ b/ext/gconf/gstgconfvideosrc.h
@@ -40,6 +40,9 @@ typedef struct _GstGConfVideoSrc {
GstElement *kid;
GstPad *pad;
+ /* gconf key notification id */
+ guint notify_id;
+
/* Current gconf string */
gchar *gconf_str;
} GstGConfVideoSrc;
diff --git a/ext/jpeg/gstjpegenc.c b/ext/jpeg/gstjpegenc.c
index 908c7e00..5edb11f1 100644
--- a/ext/jpeg/gstjpegenc.c
+++ b/ext/jpeg/gstjpegenc.c
@@ -339,9 +339,8 @@ gst_jpegenc_setcaps (GstPad * pad, GstCaps * caps)
ret = gst_pad_set_caps (jpegenc->srcpad, othercaps);
gst_caps_unref (othercaps);
- if (GST_PAD_LINK_SUCCESSFUL (ret)) {
+ if (ret)
gst_jpegenc_resync (jpegenc);
- }
gst_object_unref (jpegenc);
@@ -411,7 +410,6 @@ gst_jpegenc_resync (GstJpegEnc * jpegenc)
jpeg_suppress_tables (&jpegenc->cinfo, TRUE);
//jpeg_suppress_tables(&jpegenc->cinfo, FALSE);
- jpegenc->buffer = NULL;
GST_DEBUG_OBJECT (jpegenc, "resync done");
}
@@ -429,6 +427,9 @@ gst_jpegenc_chain (GstPad * pad, GstBuffer * buf)
jpegenc = GST_JPEGENC (GST_OBJECT_PARENT (pad));
+ if (G_UNLIKELY (jpegenc->width <= 0 || jpegenc->height <= 0))
+ goto not_negotiated;
+
data = GST_BUFFER_DATA (buf);
size = GST_BUFFER_SIZE (buf);
@@ -497,6 +498,14 @@ done:
gst_buffer_unref (buf);
return ret;
+
+/* ERRORS */
+not_negotiated:
+ {
+ GST_WARNING_OBJECT (jpegenc, "no input format set (no caps on buffer)");
+ ret = GST_FLOW_NOT_NEGOTIATED;
+ goto done;
+ }
}
static void
@@ -557,7 +566,6 @@ gst_jpegenc_change_state (GstElement * element, GstStateChange transition)
filter->line[0] = NULL;
filter->line[1] = NULL;
filter->line[2] = NULL;
- gst_jpegenc_resync (filter);
break;
default:
break;
@@ -575,6 +583,8 @@ gst_jpegenc_change_state (GstElement * element, GstStateChange transition)
filter->line[0] = NULL;
filter->line[1] = NULL;
filter->line[2] = NULL;
+ filter->width = -1;
+ filter->height = -1;
break;
default:
break;
diff --git a/ext/jpeg/gstjpegenc.h b/ext/jpeg/gstjpegenc.h
index 719b88b0..99341569 100644
--- a/ext/jpeg/gstjpegenc.h
+++ b/ext/jpeg/gstjpegenc.h
@@ -57,7 +57,6 @@ struct _GstJpegEnc {
gint height;
/* the video buffer */
gint bufsize;
- GstBuffer *buffer;
guint row_stride;
/* the jpeg line buffer */
guchar **line[3];
diff --git a/ext/pulse/pulsemixerctrl.c b/ext/pulse/pulsemixerctrl.c
index 41b68cfc..ae807c66 100644
--- a/ext/pulse/pulsemixerctrl.c
+++ b/ext/pulse/pulsemixerctrl.c
@@ -93,10 +93,11 @@ gst_pulsemixer_ctrl_sink_info_cb (pa_context * context, const pa_sink_info * i,
c->type = GST_PULSEMIXER_SINK;
if (c->track) {
- int i = g_atomic_int_get ((gint *) & c->track->flags);
+ GstMixerTrackFlags flags = c->track->flags;
- i = (i & ~GST_MIXER_TRACK_MUTE) | (c->muted ? GST_MIXER_TRACK_MUTE : 0);
- g_atomic_int_set ((gint *) & c->track->flags, i);
+ flags =
+ (flags & ~GST_MIXER_TRACK_MUTE) | (c->muted ? GST_MIXER_TRACK_MUTE : 0);
+ c->track->flags = flags;
}
c->operation_success = 1;
@@ -142,10 +143,11 @@ gst_pulsemixer_ctrl_source_info_cb (pa_context * context,
c->type = GST_PULSEMIXER_SOURCE;
if (c->track) {
- int i = g_atomic_int_get ((gint *) & c->track->flags);
+ GstMixerTrackFlags flags = c->track->flags;
- i = (i & ~GST_MIXER_TRACK_MUTE) | (c->muted ? GST_MIXER_TRACK_MUTE : 0);
- g_atomic_int_set ((gint *) & c->track->flags, i);
+ flags =
+ (flags & ~GST_MIXER_TRACK_MUTE) | (c->muted ? GST_MIXER_TRACK_MUTE : 0);
+ c->track->flags = flags;
}
c->operation_success = 1;
@@ -572,10 +574,11 @@ gst_pulsemixer_ctrl_set_mute (GstPulseMixerCtrl * c, GstMixerTrack * track,
c->update_mute = TRUE;
if (c->track) {
- int i = g_atomic_int_get ((gint *) & c->track->flags);
+ GstMixerTrackFlags flags = c->track->flags;
- i = (i & ~GST_MIXER_TRACK_MUTE) | (c->muted ? GST_MIXER_TRACK_MUTE : 0);
- g_atomic_int_set ((gint *) & c->track->flags, i);
+ flags =
+ (flags & ~GST_MIXER_TRACK_MUTE) | (c->muted ? GST_MIXER_TRACK_MUTE : 0);
+ c->track->flags = flags;
}
restart_time_event (c);
diff --git a/ext/raw1394/gsthdv1394src.c b/ext/raw1394/gsthdv1394src.c
index cbb02136..30f59d59 100644
--- a/ext/raw1394/gsthdv1394src.c
+++ b/ext/raw1394/gsthdv1394src.c
@@ -317,7 +317,7 @@ gst_hdv1394src_iec61883_receive (unsigned char *data, int len,
return -1;
if (len == IEC61883_MPEG2_TSP_SIZE) {
- memcpy (dv1394src->outdata + dv1394src->outoffset, data, len);
+ memcpy ((guint8 *) dv1394src->outdata + dv1394src->outoffset, data, len);
dv1394src->outoffset += len;
}
dv1394src->frame_sequence++;