diff options
author | Wim Taymans <wim.taymans@collabora.co.uk> | 2009-08-31 17:33:32 +0200 |
---|---|---|
committer | Wim Taymans <wim.taymans@collabora.co.uk> | 2009-08-31 18:48:03 +0200 |
commit | 25caf9f743256e602ee0f7ad216ff51d892c7de3 (patch) | |
tree | 36a0b94e2ea5911c8d5cdd5fa310dbad8a1f2462 | |
parent | 4ef773164ac14d4ba93d976fac7ff6c98a5be90b (diff) |
wildmidi: set caps on pad
Set the caps on the pad and use those caps instead of keeping a separate caps
pointer around.
Fix some whitespace.
-rw-r--r-- | ext/timidity/gstwildmidi.c | 10 | ||||
-rw-r--r-- | ext/timidity/gstwildmidi.h | 49 |
2 files changed, 31 insertions, 28 deletions
diff --git a/ext/timidity/gstwildmidi.c b/ext/timidity/gstwildmidi.c index 90ec529ec..bdfce5d7e 100644 --- a/ext/timidity/gstwildmidi.c +++ b/ext/timidity/gstwildmidi.c | |||
@@ -652,6 +652,7 @@ gst_wildmidi_loop (GstPad * sinkpad) | |||
652 | GstWildmidi *wildmidi = GST_WILDMIDI (GST_PAD_PARENT (sinkpad)); | 652 | GstWildmidi *wildmidi = GST_WILDMIDI (GST_PAD_PARENT (sinkpad)); |
653 | GstBuffer *out; | 653 | GstBuffer *out; |
654 | GstFlowReturn ret; | 654 | GstFlowReturn ret; |
655 | GstCaps *outcaps; | ||
655 | 656 | ||
656 | if (wildmidi->mididata_size == 0) { | 657 | if (wildmidi->mididata_size == 0) { |
657 | if (!gst_wildmidi_get_upstream_size (wildmidi, &wildmidi->mididata_size)) { | 658 | if (!gst_wildmidi_get_upstream_size (wildmidi, &wildmidi->mididata_size)) { |
@@ -724,6 +725,10 @@ gst_wildmidi_loop (GstPad * sinkpad) | |||
724 | info = WildMidi_GetInfo (wildmidi->song); | 725 | info = WildMidi_GetInfo (wildmidi->song); |
725 | wildmidi->o_len = info->approx_total_samples; | 726 | wildmidi->o_len = info->approx_total_samples; |
726 | 727 | ||
728 | outcaps = gst_caps_copy (gst_pad_get_pad_template_caps (wildmidi->srcpad)); | ||
729 | gst_pad_set_caps (wildmidi->srcpad, outcaps); | ||
730 | gst_caps_unref (outcaps); | ||
731 | |||
727 | gst_segment_set_newsegment (wildmidi->o_segment, FALSE, 1.0, | 732 | gst_segment_set_newsegment (wildmidi->o_segment, FALSE, 1.0, |
728 | GST_FORMAT_DEFAULT, 0, GST_CLOCK_TIME_NONE, 0); | 733 | GST_FORMAT_DEFAULT, 0, GST_CLOCK_TIME_NONE, 0); |
729 | 734 | ||
@@ -787,7 +792,7 @@ gst_wildmidi_loop (GstPad * sinkpad) | |||
787 | wildmidi->o_seek = FALSE; | 792 | wildmidi->o_seek = FALSE; |
788 | } | 793 | } |
789 | 794 | ||
790 | gst_buffer_set_caps (out, wildmidi->out_caps); | 795 | gst_buffer_set_caps (out, GST_PAD_CAPS (wildmidi->srcpad)); |
791 | ret = gst_pad_push (wildmidi->srcpad, out); | 796 | ret = gst_pad_push (wildmidi->srcpad, out); |
792 | 797 | ||
793 | if (GST_FLOW_IS_FATAL (ret) || ret == GST_FLOW_NOT_LINKED) | 798 | if (GST_FLOW_IS_FATAL (ret) || ret == GST_FLOW_NOT_LINKED) |
@@ -819,8 +824,6 @@ gst_wildmidi_change_state (GstElement * element, GstStateChange transition) | |||
819 | 824 | ||
820 | switch (transition) { | 825 | switch (transition) { |
821 | case GST_STATE_CHANGE_NULL_TO_READY: | 826 | case GST_STATE_CHANGE_NULL_TO_READY: |
822 | wildmidi->out_caps = | ||
823 | gst_caps_copy (gst_pad_get_pad_template_caps (wildmidi->srcpad)); | ||
824 | wildmidi->mididata = NULL; | 827 | wildmidi->mididata = NULL; |
825 | break; | 828 | break; |
826 | case GST_STATE_CHANGE_READY_TO_PAUSED: | 829 | case GST_STATE_CHANGE_READY_TO_PAUSED: |
@@ -846,7 +849,6 @@ gst_wildmidi_change_state (GstElement * element, GstStateChange transition) | |||
846 | wildmidi->mididata = NULL; | 849 | wildmidi->mididata = NULL; |
847 | break; | 850 | break; |
848 | case GST_STATE_CHANGE_READY_TO_NULL: | 851 | case GST_STATE_CHANGE_READY_TO_NULL: |
849 | gst_caps_unref (wildmidi->out_caps); | ||
850 | break; | 852 | break; |
851 | default: | 853 | default: |
852 | break; | 854 | break; |
diff --git a/ext/timidity/gstwildmidi.h b/ext/timidity/gstwildmidi.h index 37815ea60..84802f735 100644 --- a/ext/timidity/gstwildmidi.h +++ b/ext/timidity/gstwildmidi.h | |||
@@ -1,6 +1,6 @@ | |||
1 | /* | 1 | /* |
2 | * gstwildmidi - wildmidi plugin for gstreamer | 2 | * gstwildmidi - wildmidi plugin for gstreamer |
3 | * | 3 | * |
4 | * Copyright 2007 Wouter Paesen <wouter@blue-gate.be> | 4 | * Copyright 2007 Wouter Paesen <wouter@blue-gate.be> |
5 | * | 5 | * |
6 | * This library is free software; you can redistribute it and/or | 6 | * This library is free software; you can redistribute it and/or |
@@ -19,8 +19,8 @@ | |||
19 | * Boston, MA 02111-1307, USA. | 19 | * Boston, MA 02111-1307, USA. |
20 | * | 20 | * |
21 | * Wrapper element for libtimidity. This element works in pull | 21 | * Wrapper element for libtimidity. This element works in pull |
22 | * based mode because that's essentially how libwildmidi works. | 22 | * based mode because that's essentially how libwildmidi works. |
23 | * We create a libwildmidi stream that operates on the srcpad. | 23 | * We create a libwildmidi stream that operates on the srcpad. |
24 | * The sinkpad is in pull mode. | 24 | * The sinkpad is in pull mode. |
25 | */ | 25 | */ |
26 | 26 | ||
@@ -32,6 +32,7 @@ | |||
32 | #include <wildmidi_lib.h> | 32 | #include <wildmidi_lib.h> |
33 | 33 | ||
34 | G_BEGIN_DECLS | 34 | G_BEGIN_DECLS |
35 | |||
35 | #define GST_TYPE_WILDMIDI \ | 36 | #define GST_TYPE_WILDMIDI \ |
36 | (gst_wildmidi_get_type()) | 37 | (gst_wildmidi_get_type()) |
37 | #define GST_WILDMIDI(obj) \ | 38 | #define GST_WILDMIDI(obj) \ |
@@ -42,39 +43,38 @@ G_BEGIN_DECLS | |||
42 | (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_WILDMIDI)) | 43 | (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_WILDMIDI)) |
43 | #define GST_IS_WILDMIDI_CLASS(klass) \ | 44 | #define GST_IS_WILDMIDI_CLASS(klass) \ |
44 | (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_WILDMIDI)) | 45 | (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_WILDMIDI)) |
46 | |||
45 | typedef struct _GstWildmidi GstWildmidi; | 47 | typedef struct _GstWildmidi GstWildmidi; |
46 | typedef struct _GstWildmidiClass GstWildmidiClass; | 48 | typedef struct _GstWildmidiClass GstWildmidiClass; |
47 | 49 | ||
48 | struct _GstWildmidi | 50 | struct _GstWildmidi |
49 | { | 51 | { |
50 | GstElement element; | 52 | GstElement element; |
51 | 53 | ||
52 | GstPad *sinkpad, *srcpad; | 54 | GstPad *sinkpad, *srcpad; |
53 | 55 | ||
54 | /* input stream properties */ | 56 | /* input stream properties */ |
55 | gint64 mididata_size, mididata_offset; | 57 | gint64 mididata_size, mididata_offset; |
56 | gchar *mididata; | 58 | gchar *mididata; |
57 | gboolean mididata_filled; | 59 | gboolean mididata_filled; |
58 | 60 | ||
59 | midi *song; | 61 | midi *song; |
60 | 62 | ||
61 | /* output data */ | 63 | /* output data */ |
62 | gboolean o_new_segment, o_segment_changed, o_seek; | 64 | gboolean o_new_segment, o_segment_changed, o_seek; |
63 | GstSegment o_segment[1]; | 65 | GstSegment o_segment[1]; |
64 | gint64 o_len; | 66 | gint64 o_len; |
65 | 67 | ||
66 | /* format of the stream */ | 68 | /* format of the stream */ |
67 | gint64 bytes_per_frame; | 69 | gint64 bytes_per_frame; |
68 | GstClockTime time_per_frame; | 70 | GstClockTime time_per_frame; |
69 | 71 | ||
70 | /* options */ | 72 | /* options */ |
71 | gboolean accurate_seek; | 73 | gboolean accurate_seek; |
72 | 74 | ||
73 | /* wildmidi settings */ | 75 | /* wildmidi settings */ |
74 | gboolean high_quality; | 76 | gboolean high_quality; |
75 | gboolean linear_volume; | 77 | gboolean linear_volume; |
76 | |||
77 | GstCaps *out_caps; | ||
78 | }; | 78 | }; |
79 | 79 | ||
80 | struct _GstWildmidiClass | 80 | struct _GstWildmidiClass |
@@ -85,4 +85,5 @@ struct _GstWildmidiClass | |||
85 | GType gst_wildmidi_get_type (void); | 85 | GType gst_wildmidi_get_type (void); |
86 | 86 | ||
87 | G_END_DECLS | 87 | G_END_DECLS |
88 | |||
88 | #endif /* __GST_WILDMIDI_H__ */ | 89 | #endif /* __GST_WILDMIDI_H__ */ |