mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-06-05 06:58:56 +00:00
Merge branch 'master' into 0.11
This commit is contained in:
commit
352edd1dd9
28 changed files with 190 additions and 160 deletions
|
@ -3087,14 +3087,12 @@ gst_ogg_demux_handle_page (GstOggDemux * ogg, ogg_page * page)
|
||||||
pad = gst_ogg_demux_find_pad (ogg, serialno);
|
pad = gst_ogg_demux_find_pad (ogg, serialno);
|
||||||
} else {
|
} else {
|
||||||
GstClockTime chain_time;
|
GstClockTime chain_time;
|
||||||
GstOggChain *current_chain;
|
|
||||||
gint64 current_time;
|
gint64 current_time;
|
||||||
|
|
||||||
/* this can only happen in push mode */
|
/* this can only happen in push mode */
|
||||||
if (ogg->pullmode)
|
if (ogg->pullmode)
|
||||||
goto unknown_chain;
|
goto unknown_chain;
|
||||||
|
|
||||||
current_chain = ogg->current_chain;
|
|
||||||
current_time = ogg->segment.last_stop;
|
current_time = ogg->segment.last_stop;
|
||||||
|
|
||||||
/* time of new chain is current time */
|
/* time of new chain is current time */
|
||||||
|
|
|
@ -318,10 +318,9 @@ gst_ogg_mux_sink_event (GstPad * pad, GstEvent * event)
|
||||||
{
|
{
|
||||||
GstOggMux *ogg_mux = GST_OGG_MUX (gst_pad_get_parent (pad));
|
GstOggMux *ogg_mux = GST_OGG_MUX (gst_pad_get_parent (pad));
|
||||||
GstOggPadData *ogg_pad = (GstOggPadData *) gst_pad_get_element_private (pad);
|
GstOggPadData *ogg_pad = (GstOggPadData *) gst_pad_get_element_private (pad);
|
||||||
gboolean ret;
|
gboolean ret = FALSE;
|
||||||
|
|
||||||
GST_DEBUG ("Got %s event on pad %s:%s", GST_EVENT_TYPE_NAME (event),
|
GST_DEBUG_OBJECT (pad, "Got %s event", GST_EVENT_TYPE_NAME (event));
|
||||||
GST_DEBUG_PAD_NAME (pad));
|
|
||||||
|
|
||||||
switch (GST_EVENT_TYPE (event)) {
|
switch (GST_EVENT_TYPE (event)) {
|
||||||
case GST_EVENT_NEWSEGMENT:{
|
case GST_EVENT_NEWSEGMENT:{
|
||||||
|
@ -337,8 +336,10 @@ gst_ogg_mux_sink_event (GstPad * pad, GstEvent * event)
|
||||||
/* We don't support non time NEWSEGMENT events */
|
/* We don't support non time NEWSEGMENT events */
|
||||||
if (format != GST_FORMAT_TIME) {
|
if (format != GST_FORMAT_TIME) {
|
||||||
gst_event_unref (event);
|
gst_event_unref (event);
|
||||||
return FALSE;
|
event = NULL;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
gst_segment_set_newsegment_full (&ogg_pad->segment, update, rate,
|
gst_segment_set_newsegment_full (&ogg_pad->segment, update, rate,
|
||||||
applied_rate, format, start, stop, position);
|
applied_rate, format, start, stop, position);
|
||||||
|
|
||||||
|
@ -349,12 +350,11 @@ gst_ogg_mux_sink_event (GstPad * pad, GstEvent * event)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
ret = TRUE;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* now GstCollectPads can take care of the rest, e.g. EOS */
|
/* now GstCollectPads can take care of the rest, e.g. EOS */
|
||||||
if (ret)
|
if (event != NULL)
|
||||||
ret = ogg_pad->collect_event (pad, event);
|
ret = ogg_pad->collect_event (pad, event);
|
||||||
|
|
||||||
gst_object_unref (ogg_mux);
|
gst_object_unref (ogg_mux);
|
||||||
|
@ -883,7 +883,6 @@ gst_ogg_mux_queue_pads (GstOggMux * ogg_mux)
|
||||||
GST_DEBUG_OBJECT (data->pad, "EOS on pad");
|
GST_DEBUG_OBJECT (data->pad, "EOS on pad");
|
||||||
if (!pad->eos) {
|
if (!pad->eos) {
|
||||||
ogg_page page;
|
ogg_page page;
|
||||||
GstFlowReturn ret;
|
|
||||||
|
|
||||||
/* it's no longer active */
|
/* it's no longer active */
|
||||||
ogg_mux->active_pads--;
|
ogg_mux->active_pads--;
|
||||||
|
@ -893,8 +892,7 @@ gst_ogg_mux_queue_pads (GstOggMux * ogg_mux)
|
||||||
|
|
||||||
while (ogg_stream_flush (&pad->map.stream, &page)) {
|
while (ogg_stream_flush (&pad->map.stream, &page)) {
|
||||||
/* Place page into the per-pad queue */
|
/* Place page into the per-pad queue */
|
||||||
ret = gst_ogg_mux_pad_queue_page (ogg_mux, pad, &page,
|
gst_ogg_mux_pad_queue_page (ogg_mux, pad, &page, pad->first_delta);
|
||||||
pad->first_delta);
|
|
||||||
/* increment the page number counter */
|
/* increment the page number counter */
|
||||||
pad->pageno++;
|
pad->pageno++;
|
||||||
/* mark other pages as delta */
|
/* mark other pages as delta */
|
||||||
|
|
|
@ -494,22 +494,16 @@ setup_dirac_mapper (GstOggStream * pad, ogg_packet * packet)
|
||||||
static gboolean
|
static gboolean
|
||||||
is_keyframe_dirac (GstOggStream * pad, gint64 granulepos)
|
is_keyframe_dirac (GstOggStream * pad, gint64 granulepos)
|
||||||
{
|
{
|
||||||
gint64 pt;
|
|
||||||
int dist_h;
|
int dist_h;
|
||||||
int dist_l;
|
int dist_l;
|
||||||
int dist;
|
int dist;
|
||||||
int delay;
|
|
||||||
gint64 dt;
|
|
||||||
|
|
||||||
if (granulepos == -1)
|
if (granulepos == -1)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
pt = ((granulepos >> 22) + (granulepos & OGG_DIRAC_GRANULE_LOW_MASK)) >> 9;
|
|
||||||
dist_h = (granulepos >> 22) & 0xff;
|
dist_h = (granulepos >> 22) & 0xff;
|
||||||
dist_l = granulepos & 0xff;
|
dist_l = granulepos & 0xff;
|
||||||
dist = (dist_h << 8) | dist_l;
|
dist = (dist_h << 8) | dist_l;
|
||||||
delay = (granulepos >> 9) & 0x1fff;
|
|
||||||
dt = pt - delay;
|
|
||||||
|
|
||||||
return (dist == 0);
|
return (dist == 0);
|
||||||
}
|
}
|
||||||
|
@ -518,16 +512,10 @@ static gint64
|
||||||
granulepos_to_granule_dirac (GstOggStream * pad, gint64 gp)
|
granulepos_to_granule_dirac (GstOggStream * pad, gint64 gp)
|
||||||
{
|
{
|
||||||
gint64 pt;
|
gint64 pt;
|
||||||
int dist_h;
|
|
||||||
int dist_l;
|
|
||||||
int dist;
|
|
||||||
int delay;
|
int delay;
|
||||||
gint64 dt;
|
gint64 dt;
|
||||||
|
|
||||||
pt = ((gp >> 22) + (gp & OGG_DIRAC_GRANULE_LOW_MASK)) >> 9;
|
pt = ((gp >> 22) + (gp & OGG_DIRAC_GRANULE_LOW_MASK)) >> 9;
|
||||||
dist_h = (gp >> 22) & 0xff;
|
|
||||||
dist_l = gp & 0xff;
|
|
||||||
dist = (dist_h << 8) | dist_l;
|
|
||||||
delay = (gp >> 9) & 0x1fff;
|
delay = (gp >> 9) & 0x1fff;
|
||||||
dt = pt - delay;
|
dt = pt - delay;
|
||||||
|
|
||||||
|
|
|
@ -449,21 +449,19 @@ serialize_encoding_profile (GKeyFile * out, GstEncodingProfile * prof)
|
||||||
const GList *tmp;
|
const GList *tmp;
|
||||||
guint i;
|
guint i;
|
||||||
const gchar *profname, *profdesc, *profpreset, *proftype;
|
const gchar *profname, *profdesc, *profpreset, *proftype;
|
||||||
const GstCaps *profformat, *profrestriction;
|
const GstCaps *profformat;
|
||||||
|
|
||||||
profname = gst_encoding_profile_get_name (prof);
|
profname = gst_encoding_profile_get_name (prof);
|
||||||
profdesc = gst_encoding_profile_get_description (prof);
|
profdesc = gst_encoding_profile_get_description (prof);
|
||||||
profformat = gst_encoding_profile_get_format (prof);
|
profformat = gst_encoding_profile_get_format (prof);
|
||||||
profpreset = gst_encoding_profile_get_preset (prof);
|
profpreset = gst_encoding_profile_get_preset (prof);
|
||||||
proftype = gst_encoding_profile_get_type_nick (prof);
|
proftype = gst_encoding_profile_get_type_nick (prof);
|
||||||
profrestriction = gst_encoding_profile_get_restriction (prof);
|
|
||||||
|
|
||||||
profgroupname = g_strdup_printf ("profile-%s", profname);
|
profgroupname = g_strdup_printf ("profile-%s", profname);
|
||||||
|
|
||||||
g_key_file_set_string (out, profgroupname, "name", profname);
|
g_key_file_set_string (out, profgroupname, "name", profname);
|
||||||
|
|
||||||
g_key_file_set_value (out, profgroupname, "type",
|
g_key_file_set_value (out, profgroupname, "type", proftype);
|
||||||
gst_encoding_profile_get_type_nick (prof));
|
|
||||||
|
|
||||||
if (profdesc) {
|
if (profdesc) {
|
||||||
gchar *locale;
|
gchar *locale;
|
||||||
|
@ -1002,7 +1000,6 @@ gst_encoding_target_save (GstEncodingTarget * target, GError ** error)
|
||||||
{
|
{
|
||||||
gchar *filename;
|
gchar *filename;
|
||||||
gchar *lfilename;
|
gchar *lfilename;
|
||||||
gboolean res;
|
|
||||||
|
|
||||||
g_return_val_if_fail (GST_IS_ENCODING_TARGET (target), FALSE);
|
g_return_val_if_fail (GST_IS_ENCODING_TARGET (target), FALSE);
|
||||||
g_return_val_if_fail (target->category != NULL, FALSE);
|
g_return_val_if_fail (target->category != NULL, FALSE);
|
||||||
|
@ -1013,7 +1010,7 @@ gst_encoding_target_save (GstEncodingTarget * target, GError ** error)
|
||||||
GST_ENCODING_TARGET_DIRECTORY, target->category, lfilename, NULL);
|
GST_ENCODING_TARGET_DIRECTORY, target->category, lfilename, NULL);
|
||||||
g_free (lfilename);
|
g_free (lfilename);
|
||||||
|
|
||||||
res = gst_encoding_target_save_to_file (target, filename, error);
|
gst_encoding_target_save_to_file (target, filename, error);
|
||||||
g_free (filename);
|
g_free (filename);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
|
@ -269,6 +269,20 @@ parse_mode (GstRTSPTransport * transport, const gchar * str)
|
||||||
transport->mode_record = (strstr (str, "record") != NULL);
|
transport->mode_record = (strstr (str, "record") != NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
check_range (const gchar * str, gchar ** tmp, gint * range)
|
||||||
|
{
|
||||||
|
glong range_val;
|
||||||
|
|
||||||
|
range_val = strtol (str, tmp, 10);
|
||||||
|
if (range_val >= G_MININT && range_val <= G_MAXINT) {
|
||||||
|
*range = range_val;
|
||||||
|
return TRUE;
|
||||||
|
} else {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
parse_range (const gchar * str, GstRTSPRange * range)
|
parse_range (const gchar * str, GstRTSPRange * range)
|
||||||
{
|
{
|
||||||
|
@ -286,16 +300,14 @@ parse_range (const gchar * str, GstRTSPRange * range)
|
||||||
if (g_ascii_isspace (minus[1]) || minus[1] == '+' || minus[1] == '-')
|
if (g_ascii_isspace (minus[1]) || minus[1] == '+' || minus[1] == '-')
|
||||||
goto invalid_range;
|
goto invalid_range;
|
||||||
|
|
||||||
range->min = strtol (str, &tmp, 10);
|
if (!check_range (str, &tmp, &range->min) || str == tmp || tmp != minus)
|
||||||
if (str == tmp || tmp != minus)
|
|
||||||
goto invalid_range;
|
goto invalid_range;
|
||||||
|
|
||||||
range->max = strtol (minus + 1, &tmp, 10);
|
if (!check_range (minus + 1, &tmp, &range->max) || (*tmp && *tmp != ';'))
|
||||||
if (*tmp && *tmp != ';')
|
|
||||||
goto invalid_range;
|
goto invalid_range;
|
||||||
} else {
|
} else {
|
||||||
range->min = strtol (str, &tmp, 10);
|
if (!check_range (str, &tmp, &range->min) || str == tmp ||
|
||||||
if (str == tmp || (*tmp && *tmp != ';'))
|
(*tmp && *tmp != ';'))
|
||||||
goto invalid_range;
|
goto invalid_range;
|
||||||
|
|
||||||
range->max = -1;
|
range->max = -1;
|
||||||
|
|
|
@ -301,6 +301,7 @@ EXIF_DESERIALIZATION_FUNC (add_to_pending_tags);
|
||||||
#define EXIF_TAG_DATE_TIME_DIGITIZED 0x9004
|
#define EXIF_TAG_DATE_TIME_DIGITIZED 0x9004
|
||||||
#define EXIF_TAG_SHUTTER_SPEED_VALUE 0x9201
|
#define EXIF_TAG_SHUTTER_SPEED_VALUE 0x9201
|
||||||
#define EXIF_TAG_APERTURE_VALUE 0x9202
|
#define EXIF_TAG_APERTURE_VALUE 0x9202
|
||||||
|
#define EXIF_TAG_EXPOSURE_BIAS 0x9204
|
||||||
#define EXIF_TAG_METERING_MODE 0x9207
|
#define EXIF_TAG_METERING_MODE 0x9207
|
||||||
#define EXIF_TAG_FLASH 0x9209
|
#define EXIF_TAG_FLASH 0x9209
|
||||||
#define EXIF_TAG_FOCAL_LENGTH 0x920A
|
#define EXIF_TAG_FOCAL_LENGTH 0x920A
|
||||||
|
@ -388,6 +389,8 @@ static const GstExifTagMatch tag_map_exif[] = {
|
||||||
{GST_TAG_CAPTURING_FOCAL_RATIO, EXIF_TAG_APERTURE_VALUE, EXIF_TYPE_RATIONAL,
|
{GST_TAG_CAPTURING_FOCAL_RATIO, EXIF_TAG_APERTURE_VALUE, EXIF_TYPE_RATIONAL,
|
||||||
0,
|
0,
|
||||||
serialize_aperture_value, deserialize_aperture_value},
|
serialize_aperture_value, deserialize_aperture_value},
|
||||||
|
{GST_TAG_CAPTURING_EXPOSURE_COMPENSATION, EXIF_TAG_EXPOSURE_BIAS,
|
||||||
|
EXIF_TYPE_SRATIONAL, 0, NULL, NULL},
|
||||||
{GST_TAG_CAPTURING_METERING_MODE, EXIF_TAG_METERING_MODE, EXIF_TYPE_SHORT, 0,
|
{GST_TAG_CAPTURING_METERING_MODE, EXIF_TAG_METERING_MODE, EXIF_TYPE_SHORT, 0,
|
||||||
serialize_metering_mode, deserialize_metering_mode},
|
serialize_metering_mode, deserialize_metering_mode},
|
||||||
{GST_TAG_CAPTURING_FLASH_FIRED, EXIF_TAG_FLASH, EXIF_TYPE_SHORT, 0,
|
{GST_TAG_CAPTURING_FLASH_FIRED, EXIF_TAG_FLASH, EXIF_TYPE_SHORT, 0,
|
||||||
|
@ -920,6 +923,41 @@ write_exif_rational_tag_from_taglist (GstExifWriter * writer,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
write_exif_signed_rational_tag_from_taglist (GstExifWriter * writer,
|
||||||
|
const GstTagList * taglist, const GstExifTagMatch * exiftag)
|
||||||
|
{
|
||||||
|
const GValue *value;
|
||||||
|
gdouble num = 0;
|
||||||
|
gint tag_size = gst_tag_list_get_tag_size (taglist, exiftag->gst_tag);
|
||||||
|
|
||||||
|
if (tag_size != 1) {
|
||||||
|
GST_WARNING ("Only the first item in the taglist will be serialized");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
value = gst_tag_list_get_value_index (taglist, exiftag->gst_tag, 0);
|
||||||
|
|
||||||
|
/* do some conversion if needed */
|
||||||
|
switch (G_VALUE_TYPE (value)) {
|
||||||
|
case G_TYPE_DOUBLE:
|
||||||
|
num = g_value_get_double (value);
|
||||||
|
gst_exif_writer_write_signed_rational_tag_from_double (writer,
|
||||||
|
exiftag->exif_tag, num);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if (G_VALUE_TYPE (value) == GST_TYPE_FRACTION) {
|
||||||
|
gst_exif_writer_write_signed_rational_tag (writer, exiftag->exif_tag,
|
||||||
|
gst_value_get_fraction_numerator (value),
|
||||||
|
gst_value_get_fraction_denominator (value));
|
||||||
|
} else {
|
||||||
|
GST_WARNING ("Conversion from %s to signed rational not supported",
|
||||||
|
G_VALUE_TYPE_NAME (value));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
write_exif_integer_tag_from_taglist (GstExifWriter * writer,
|
write_exif_integer_tag_from_taglist (GstExifWriter * writer,
|
||||||
const GstTagList * taglist, const GstExifTagMatch * exiftag)
|
const GstTagList * taglist, const GstExifTagMatch * exiftag)
|
||||||
|
@ -980,6 +1018,9 @@ write_exif_tag_from_taglist (GstExifWriter * writer, const GstTagList * taglist,
|
||||||
case EXIF_TYPE_RATIONAL:
|
case EXIF_TYPE_RATIONAL:
|
||||||
write_exif_rational_tag_from_taglist (writer, taglist, exiftag);
|
write_exif_rational_tag_from_taglist (writer, taglist, exiftag);
|
||||||
break;
|
break;
|
||||||
|
case EXIF_TYPE_SRATIONAL:
|
||||||
|
write_exif_signed_rational_tag_from_taglist (writer, taglist, exiftag);
|
||||||
|
break;
|
||||||
case EXIF_TYPE_LONG:
|
case EXIF_TYPE_LONG:
|
||||||
case EXIF_TYPE_SHORT:
|
case EXIF_TYPE_SHORT:
|
||||||
write_exif_integer_tag_from_taglist (writer, taglist, exiftag);
|
write_exif_integer_tag_from_taglist (writer, taglist, exiftag);
|
||||||
|
@ -1588,6 +1629,10 @@ parse_exif_ifd (GstExifReader * exif_reader, gint buf_offset,
|
||||||
parse_exif_rational_tag (exif_reader, tag_map[map_index].gst_tag,
|
parse_exif_rational_tag (exif_reader, tag_map[map_index].gst_tag,
|
||||||
tagdata.count, tagdata.offset, 1, FALSE);
|
tagdata.count, tagdata.offset, 1, FALSE);
|
||||||
break;
|
break;
|
||||||
|
case EXIF_TYPE_SRATIONAL:
|
||||||
|
parse_exif_rational_tag (exif_reader, tag_map[map_index].gst_tag,
|
||||||
|
tagdata.count, tagdata.offset, 1, TRUE);
|
||||||
|
break;
|
||||||
case EXIF_TYPE_UNDEFINED:
|
case EXIF_TYPE_UNDEFINED:
|
||||||
parse_exif_undefined_tag (exif_reader, &tag_map[map_index],
|
parse_exif_undefined_tag (exif_reader, &tag_map[map_index],
|
||||||
tagdata.count, tagdata.offset, tagdata.offset_as_data);
|
tagdata.count, tagdata.offset, tagdata.offset_as_data);
|
||||||
|
|
|
@ -109,7 +109,7 @@ static const gchar *genres[] = {
|
||||||
"Native American",
|
"Native American",
|
||||||
"Cabaret",
|
"Cabaret",
|
||||||
"New Wave",
|
"New Wave",
|
||||||
"Psychadelic",
|
"Psychedelic",
|
||||||
"Rave",
|
"Rave",
|
||||||
"Showtunes",
|
"Showtunes",
|
||||||
"Trailer",
|
"Trailer",
|
||||||
|
@ -135,7 +135,7 @@ static const gchar *genres[] = {
|
||||||
"Avantgarde",
|
"Avantgarde",
|
||||||
"Gothic Rock",
|
"Gothic Rock",
|
||||||
"Progressive Rock",
|
"Progressive Rock",
|
||||||
"Psychadelic Rock",
|
"Psychedelic Rock",
|
||||||
"Symphonic Rock",
|
"Symphonic Rock",
|
||||||
"Slow Rock",
|
"Slow Rock",
|
||||||
"Big Band",
|
"Big Band",
|
||||||
|
|
|
@ -897,6 +897,9 @@ _init_xmp_tag_map (gpointer user_data)
|
||||||
_gst_xmp_schema_add_simple_mapping (schema, GST_TAG_GEO_LOCATION_LONGITUDE,
|
_gst_xmp_schema_add_simple_mapping (schema, GST_TAG_GEO_LOCATION_LONGITUDE,
|
||||||
"exif:GPSLongitude", GST_XMP_TAG_TYPE_SIMPLE, serialize_exif_longitude,
|
"exif:GPSLongitude", GST_XMP_TAG_TYPE_SIMPLE, serialize_exif_longitude,
|
||||||
deserialize_exif_longitude);
|
deserialize_exif_longitude);
|
||||||
|
_gst_xmp_schema_add_simple_mapping (schema,
|
||||||
|
GST_TAG_CAPTURING_EXPOSURE_COMPENSATION, "exif:ExposureBiasValue",
|
||||||
|
GST_XMP_TAG_TYPE_SIMPLE, NULL, NULL);
|
||||||
|
|
||||||
/* compound exif tags */
|
/* compound exif tags */
|
||||||
array = g_ptr_array_sized_new (2);
|
array = g_ptr_array_sized_new (2);
|
||||||
|
@ -1034,6 +1037,18 @@ read_one_tag (GstTagList * list, const gchar * tag, XmpTag * xmptag,
|
||||||
gst_tag_list_add (list, merge_mode, tag, v, NULL);
|
gst_tag_list_add (list, merge_mode, tag, v, NULL);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case G_TYPE_DOUBLE:{
|
||||||
|
gdouble value = 0;
|
||||||
|
gint frac_n, frac_d;
|
||||||
|
|
||||||
|
if (sscanf (v, "%d/%d", &frac_n, &frac_d) == 2) {
|
||||||
|
gst_util_fraction_to_double (frac_n, frac_d, &value);
|
||||||
|
gst_tag_list_add (list, merge_mode, tag, value, NULL);
|
||||||
|
} else {
|
||||||
|
GST_WARNING ("Failed to parse fraction: %s", v);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
if (tag_type == GST_TYPE_DATE_TIME) {
|
if (tag_type == GST_TYPE_DATE_TIME) {
|
||||||
GstDateTime *datetime = NULL;
|
GstDateTime *datetime = NULL;
|
||||||
|
@ -1463,6 +1478,8 @@ gst_value_serialize_xmp (const GValue * value)
|
||||||
return g_strdup_printf ("%d", g_value_get_int (value));
|
return g_strdup_printf ("%d", g_value_get_int (value));
|
||||||
case G_TYPE_UINT:
|
case G_TYPE_UINT:
|
||||||
return g_strdup_printf ("%u", g_value_get_uint (value));
|
return g_strdup_printf ("%u", g_value_get_uint (value));
|
||||||
|
case G_TYPE_DOUBLE:
|
||||||
|
return double_to_fraction_string (g_value_get_double (value));
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -202,6 +202,15 @@ G_BEGIN_DECLS
|
||||||
*/
|
*/
|
||||||
#define GST_TAG_CAPTURING_EXPOSURE_MODE "capturing-exposure-mode"
|
#define GST_TAG_CAPTURING_EXPOSURE_MODE "capturing-exposure-mode"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GST_TAG_CAPTURING_EXPOSURE_COMPENSATION:
|
||||||
|
*
|
||||||
|
* Exposure compensation using when capturing an image in EV. (double)
|
||||||
|
*
|
||||||
|
* Since: 0.10.33
|
||||||
|
*/
|
||||||
|
#define GST_TAG_CAPTURING_EXPOSURE_COMPENSATION "capturing-exposure-compensation"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GST_TAG_CAPTURING_SCENE_CAPTURE_TYPE:
|
* GST_TAG_CAPTURING_SCENE_CAPTURE_TYPE:
|
||||||
*
|
*
|
||||||
|
|
|
@ -133,6 +133,10 @@ gst_tag_register_tags_internal (gpointer unused)
|
||||||
G_TYPE_STRING, _("capturing exposure mode"),
|
G_TYPE_STRING, _("capturing exposure mode"),
|
||||||
_("The exposure mode used when capturing an image"), NULL);
|
_("The exposure mode used when capturing an image"), NULL);
|
||||||
|
|
||||||
|
gst_tag_register (GST_TAG_CAPTURING_EXPOSURE_COMPENSATION, GST_TAG_FLAG_META,
|
||||||
|
G_TYPE_DOUBLE, _("capturing exposure compensation"),
|
||||||
|
_("The exposure compensation used when capturing an image"), NULL);
|
||||||
|
|
||||||
gst_tag_register (GST_TAG_CAPTURING_SCENE_CAPTURE_TYPE, GST_TAG_FLAG_META,
|
gst_tag_register (GST_TAG_CAPTURING_SCENE_CAPTURE_TYPE, GST_TAG_FLAG_META,
|
||||||
G_TYPE_STRING, _("capturing scene capture type"),
|
G_TYPE_STRING, _("capturing scene capture type"),
|
||||||
_("The scene capture mode used when capturing an image"), NULL);
|
_("The scene capture mode used when capturing an image"), NULL);
|
||||||
|
|
|
@ -1061,27 +1061,6 @@ gboolean
|
||||||
gst_video_format_is_rgb (GstVideoFormat format)
|
gst_video_format_is_rgb (GstVideoFormat format)
|
||||||
{
|
{
|
||||||
switch (format) {
|
switch (format) {
|
||||||
case GST_VIDEO_FORMAT_I420:
|
|
||||||
case GST_VIDEO_FORMAT_YV12:
|
|
||||||
case GST_VIDEO_FORMAT_YUY2:
|
|
||||||
case GST_VIDEO_FORMAT_YVYU:
|
|
||||||
case GST_VIDEO_FORMAT_UYVY:
|
|
||||||
case GST_VIDEO_FORMAT_AYUV:
|
|
||||||
case GST_VIDEO_FORMAT_Y41B:
|
|
||||||
case GST_VIDEO_FORMAT_Y42B:
|
|
||||||
case GST_VIDEO_FORMAT_Y444:
|
|
||||||
case GST_VIDEO_FORMAT_v210:
|
|
||||||
case GST_VIDEO_FORMAT_v216:
|
|
||||||
case GST_VIDEO_FORMAT_NV12:
|
|
||||||
case GST_VIDEO_FORMAT_NV21:
|
|
||||||
case GST_VIDEO_FORMAT_v308:
|
|
||||||
case GST_VIDEO_FORMAT_UYVP:
|
|
||||||
case GST_VIDEO_FORMAT_A420:
|
|
||||||
case GST_VIDEO_FORMAT_YUV9:
|
|
||||||
case GST_VIDEO_FORMAT_YVU9:
|
|
||||||
case GST_VIDEO_FORMAT_IYU1:
|
|
||||||
case GST_VIDEO_FORMAT_AYUV64:
|
|
||||||
return FALSE;
|
|
||||||
case GST_VIDEO_FORMAT_RGBx:
|
case GST_VIDEO_FORMAT_RGBx:
|
||||||
case GST_VIDEO_FORMAT_BGRx:
|
case GST_VIDEO_FORMAT_BGRx:
|
||||||
case GST_VIDEO_FORMAT_xRGB:
|
case GST_VIDEO_FORMAT_xRGB:
|
||||||
|
@ -1142,24 +1121,6 @@ gst_video_format_is_yuv (GstVideoFormat format)
|
||||||
case GST_VIDEO_FORMAT_IYU1:
|
case GST_VIDEO_FORMAT_IYU1:
|
||||||
case GST_VIDEO_FORMAT_AYUV64:
|
case GST_VIDEO_FORMAT_AYUV64:
|
||||||
return TRUE;
|
return TRUE;
|
||||||
case GST_VIDEO_FORMAT_RGBx:
|
|
||||||
case GST_VIDEO_FORMAT_BGRx:
|
|
||||||
case GST_VIDEO_FORMAT_xRGB:
|
|
||||||
case GST_VIDEO_FORMAT_xBGR:
|
|
||||||
case GST_VIDEO_FORMAT_RGBA:
|
|
||||||
case GST_VIDEO_FORMAT_BGRA:
|
|
||||||
case GST_VIDEO_FORMAT_ARGB:
|
|
||||||
case GST_VIDEO_FORMAT_ABGR:
|
|
||||||
case GST_VIDEO_FORMAT_RGB:
|
|
||||||
case GST_VIDEO_FORMAT_BGR:
|
|
||||||
case GST_VIDEO_FORMAT_RGB16:
|
|
||||||
case GST_VIDEO_FORMAT_BGR16:
|
|
||||||
case GST_VIDEO_FORMAT_RGB15:
|
|
||||||
case GST_VIDEO_FORMAT_BGR15:
|
|
||||||
case GST_VIDEO_FORMAT_RGB8_PALETTED:
|
|
||||||
case GST_VIDEO_FORMAT_ARGB64:
|
|
||||||
case GST_VIDEO_FORMAT_r210:
|
|
||||||
return FALSE;
|
|
||||||
default:
|
default:
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
@ -1205,26 +1166,6 @@ gboolean
|
||||||
gst_video_format_has_alpha (GstVideoFormat format)
|
gst_video_format_has_alpha (GstVideoFormat format)
|
||||||
{
|
{
|
||||||
switch (format) {
|
switch (format) {
|
||||||
case GST_VIDEO_FORMAT_I420:
|
|
||||||
case GST_VIDEO_FORMAT_YV12:
|
|
||||||
case GST_VIDEO_FORMAT_YUY2:
|
|
||||||
case GST_VIDEO_FORMAT_YVYU:
|
|
||||||
case GST_VIDEO_FORMAT_UYVY:
|
|
||||||
case GST_VIDEO_FORMAT_Y41B:
|
|
||||||
case GST_VIDEO_FORMAT_Y42B:
|
|
||||||
case GST_VIDEO_FORMAT_Y444:
|
|
||||||
case GST_VIDEO_FORMAT_v210:
|
|
||||||
case GST_VIDEO_FORMAT_v216:
|
|
||||||
case GST_VIDEO_FORMAT_NV12:
|
|
||||||
case GST_VIDEO_FORMAT_NV21:
|
|
||||||
case GST_VIDEO_FORMAT_v308:
|
|
||||||
case GST_VIDEO_FORMAT_Y800:
|
|
||||||
case GST_VIDEO_FORMAT_Y16:
|
|
||||||
case GST_VIDEO_FORMAT_UYVP:
|
|
||||||
case GST_VIDEO_FORMAT_YUV9:
|
|
||||||
case GST_VIDEO_FORMAT_YVU9:
|
|
||||||
case GST_VIDEO_FORMAT_IYU1:
|
|
||||||
return FALSE;
|
|
||||||
case GST_VIDEO_FORMAT_AYUV:
|
case GST_VIDEO_FORMAT_AYUV:
|
||||||
case GST_VIDEO_FORMAT_RGBA:
|
case GST_VIDEO_FORMAT_RGBA:
|
||||||
case GST_VIDEO_FORMAT_BGRA:
|
case GST_VIDEO_FORMAT_BGRA:
|
||||||
|
@ -1235,18 +1176,6 @@ gst_video_format_has_alpha (GstVideoFormat format)
|
||||||
case GST_VIDEO_FORMAT_ARGB64:
|
case GST_VIDEO_FORMAT_ARGB64:
|
||||||
case GST_VIDEO_FORMAT_AYUV64:
|
case GST_VIDEO_FORMAT_AYUV64:
|
||||||
return TRUE;
|
return TRUE;
|
||||||
case GST_VIDEO_FORMAT_RGBx:
|
|
||||||
case GST_VIDEO_FORMAT_BGRx:
|
|
||||||
case GST_VIDEO_FORMAT_xRGB:
|
|
||||||
case GST_VIDEO_FORMAT_xBGR:
|
|
||||||
case GST_VIDEO_FORMAT_RGB:
|
|
||||||
case GST_VIDEO_FORMAT_BGR:
|
|
||||||
case GST_VIDEO_FORMAT_RGB16:
|
|
||||||
case GST_VIDEO_FORMAT_BGR16:
|
|
||||||
case GST_VIDEO_FORMAT_RGB15:
|
|
||||||
case GST_VIDEO_FORMAT_BGR15:
|
|
||||||
case GST_VIDEO_FORMAT_r210:
|
|
||||||
return FALSE;
|
|
||||||
default:
|
default:
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -70,7 +70,7 @@ G_BEGIN_DECLS
|
||||||
* @GST_VIDEO_FORMAT_YVU9: planar 4:1:0 YUV (like YUV9 but UV planes swapped) (Since: 0.10.32)
|
* @GST_VIDEO_FORMAT_YVU9: planar 4:1:0 YUV (like YUV9 but UV planes swapped) (Since: 0.10.32)
|
||||||
* @GST_VIDEO_FORMAT_IYU1: packed 4:1:1 YUV (Cb-Y0-Y1-Cr-Y2-Y3 ...) (Since: 0.10.32)
|
* @GST_VIDEO_FORMAT_IYU1: packed 4:1:1 YUV (Cb-Y0-Y1-Cr-Y2-Y3 ...) (Since: 0.10.32)
|
||||||
* @GST_VIDEO_FORMAT_ARGB64: rgb with alpha channel first, 16 bits per channel (Since: 0.10.33)
|
* @GST_VIDEO_FORMAT_ARGB64: rgb with alpha channel first, 16 bits per channel (Since: 0.10.33)
|
||||||
* @GST_VIDEO_FORMAT_AY64: packed 4:4:4 YUV with alpha channel, 16 bits per channel (A0-Y0-U0-V0 ...) (Since: 0.10.33)
|
* @GST_VIDEO_FORMAT_AYUV64: packed 4:4:4 YUV with alpha channel, 16 bits per channel (A0-Y0-U0-V0 ...) (Since: 0.10.33)
|
||||||
* @GST_VIDEO_FORMAT_r210: packed 4:4:4 RGB, 10 bits per channel (Since: 0.10.33)
|
* @GST_VIDEO_FORMAT_r210: packed 4:4:4 RGB, 10 bits per channel (Since: 0.10.33)
|
||||||
*
|
*
|
||||||
* Enum value describing the most common video formats.
|
* Enum value describing the most common video formats.
|
||||||
|
|
|
@ -1559,6 +1559,7 @@ stream_group_free (GstEncodeBin * ebin, StreamGroup * sgroup)
|
||||||
/* Capsfilter - outqueue */
|
/* Capsfilter - outqueue */
|
||||||
gst_element_set_state (sgroup->outfilter, GST_STATE_NULL);
|
gst_element_set_state (sgroup->outfilter, GST_STATE_NULL);
|
||||||
gst_element_unlink (sgroup->outfilter, sgroup->outqueue);
|
gst_element_unlink (sgroup->outfilter, sgroup->outqueue);
|
||||||
|
gst_element_set_state (sgroup->outqueue, GST_STATE_NULL);
|
||||||
gst_bin_remove (GST_BIN (ebin), sgroup->outqueue);
|
gst_bin_remove (GST_BIN (ebin), sgroup->outqueue);
|
||||||
|
|
||||||
/* streamcombiner - parser - capsfilter */
|
/* streamcombiner - parser - capsfilter */
|
||||||
|
@ -1566,6 +1567,7 @@ stream_group_free (GstEncodeBin * ebin, StreamGroup * sgroup)
|
||||||
gst_element_set_state (sgroup->parser, GST_STATE_NULL);
|
gst_element_set_state (sgroup->parser, GST_STATE_NULL);
|
||||||
gst_element_unlink (sgroup->parser, sgroup->outfilter);
|
gst_element_unlink (sgroup->parser, sgroup->outfilter);
|
||||||
gst_element_unlink (sgroup->combiner, sgroup->parser);
|
gst_element_unlink (sgroup->combiner, sgroup->parser);
|
||||||
|
gst_bin_remove ((GstBin *) ebin, sgroup->parser);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Sink Ghostpad */
|
/* Sink Ghostpad */
|
||||||
|
@ -1606,6 +1608,8 @@ stream_group_free (GstEncodeBin * ebin, StreamGroup * sgroup)
|
||||||
gst_iterator_resync (it);
|
gst_iterator_resync (it);
|
||||||
}
|
}
|
||||||
gst_iterator_free (it);
|
gst_iterator_free (it);
|
||||||
|
gst_element_set_state (sgroup->combiner, GST_STATE_NULL);
|
||||||
|
gst_bin_remove ((GstBin *) ebin, sgroup->combiner);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sgroup->splitter) {
|
if (sgroup->splitter) {
|
||||||
|
@ -1616,15 +1620,23 @@ stream_group_free (GstEncodeBin * ebin, StreamGroup * sgroup)
|
||||||
gst_iterator_resync (it);
|
gst_iterator_resync (it);
|
||||||
}
|
}
|
||||||
gst_iterator_free (it);
|
gst_iterator_free (it);
|
||||||
|
|
||||||
|
gst_element_set_state (sgroup->splitter, GST_STATE_NULL);
|
||||||
|
gst_bin_remove ((GstBin *) ebin, sgroup->splitter);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sgroup->inqueue)
|
if (sgroup->inqueue)
|
||||||
gst_bin_remove ((GstBin *) ebin, sgroup->inqueue);
|
gst_bin_remove ((GstBin *) ebin, sgroup->inqueue);
|
||||||
|
|
||||||
if (sgroup->encoder)
|
if (sgroup->encoder)
|
||||||
gst_bin_remove ((GstBin *) ebin, sgroup->encoder);
|
gst_bin_remove ((GstBin *) ebin, sgroup->encoder);
|
||||||
|
|
||||||
if (sgroup->smartencoder)
|
if (sgroup->smartencoder)
|
||||||
gst_bin_remove ((GstBin *) ebin, sgroup->smartencoder);
|
gst_bin_remove ((GstBin *) ebin, sgroup->smartencoder);
|
||||||
|
|
||||||
|
if (sgroup->outfilter)
|
||||||
|
gst_bin_remove ((GstBin *) ebin, sgroup->outfilter);
|
||||||
|
|
||||||
g_slice_free (StreamGroup, sgroup);
|
g_slice_free (StreamGroup, sgroup);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1653,6 +1665,7 @@ gst_encode_bin_tear_down_profile (GstEncodeBin * ebin)
|
||||||
|
|
||||||
/* Remove muxer if present */
|
/* Remove muxer if present */
|
||||||
if (ebin->muxer) {
|
if (ebin->muxer) {
|
||||||
|
gst_element_set_state (ebin->muxer, GST_STATE_NULL);
|
||||||
gst_bin_remove (GST_BIN (ebin), ebin->muxer);
|
gst_bin_remove (GST_BIN (ebin), ebin->muxer);
|
||||||
ebin->muxer = NULL;
|
ebin->muxer = NULL;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2153,7 +2153,7 @@ static int glue (get_alpha_info_, RGB_NAME) (const AVPicture * src,
|
||||||
{
|
{
|
||||||
const unsigned char *p;
|
const unsigned char *p;
|
||||||
int src_wrap, ret, x, y;
|
int src_wrap, ret, x, y;
|
||||||
unsigned int r, g, b, a;
|
unsigned int G_GNUC_UNUSED r, G_GNUC_UNUSED g, G_GNUC_UNUSED b, a;
|
||||||
|
|
||||||
p = src->data[0];
|
p = src->data[0];
|
||||||
src_wrap = src->linesize[0] - BPP * width;
|
src_wrap = src->linesize[0] - BPP * width;
|
||||||
|
|
|
@ -425,7 +425,6 @@ group_commit (GstPlayBaseBin * play_base_bin, gboolean fatal, gboolean subtitle)
|
||||||
{
|
{
|
||||||
GstPlayBaseGroup *group;
|
GstPlayBaseGroup *group;
|
||||||
gboolean had_active_group;
|
gboolean had_active_group;
|
||||||
gboolean res;
|
|
||||||
|
|
||||||
GROUP_LOCK (play_base_bin);
|
GROUP_LOCK (play_base_bin);
|
||||||
group = play_base_bin->building_group;
|
group = play_base_bin->building_group;
|
||||||
|
@ -486,8 +485,7 @@ group_commit (GstPlayBaseBin * play_base_bin, gboolean fatal, gboolean subtitle)
|
||||||
|
|
||||||
setup_substreams (play_base_bin);
|
setup_substreams (play_base_bin);
|
||||||
GST_DEBUG_OBJECT (play_base_bin, "Emitting signal");
|
GST_DEBUG_OBJECT (play_base_bin, "Emitting signal");
|
||||||
res =
|
GST_PLAY_BASE_BIN_GET_CLASS (play_base_bin)->setup_output_pads
|
||||||
GST_PLAY_BASE_BIN_GET_CLASS (play_base_bin)->setup_output_pads
|
|
||||||
(play_base_bin, group);
|
(play_base_bin, group);
|
||||||
GST_DEBUG_OBJECT (play_base_bin, "done");
|
GST_DEBUG_OBJECT (play_base_bin, "done");
|
||||||
|
|
||||||
|
@ -1167,7 +1165,6 @@ probe_triggered (GstPad * pad, GstEvent * event, gpointer user_data)
|
||||||
GstPlayBaseGroup *group;
|
GstPlayBaseGroup *group;
|
||||||
GstPlayBaseBin *play_base_bin;
|
GstPlayBaseBin *play_base_bin;
|
||||||
GstStreamInfo *info;
|
GstStreamInfo *info;
|
||||||
gboolean res;
|
|
||||||
GstEventType type;
|
GstEventType type;
|
||||||
|
|
||||||
type = GST_EVENT_TYPE (event);
|
type = GST_EVENT_TYPE (event);
|
||||||
|
@ -1231,8 +1228,7 @@ probe_triggered (GstPad * pad, GstEvent * event, gpointer user_data)
|
||||||
setup_substreams (play_base_bin);
|
setup_substreams (play_base_bin);
|
||||||
GST_DEBUG ("switching to next group %p - emitting signal", group);
|
GST_DEBUG ("switching to next group %p - emitting signal", group);
|
||||||
/* and signal the new group */
|
/* and signal the new group */
|
||||||
res =
|
GST_PLAY_BASE_BIN_GET_CLASS (play_base_bin)->setup_output_pads
|
||||||
GST_PLAY_BASE_BIN_GET_CLASS (play_base_bin)->setup_output_pads
|
|
||||||
(play_base_bin, group);
|
(play_base_bin, group);
|
||||||
|
|
||||||
GROUP_UNLOCK (play_base_bin);
|
GROUP_UNLOCK (play_base_bin);
|
||||||
|
|
|
@ -84,7 +84,6 @@ tmplayer_parse_line (ParserState * state, const gchar * line, guint line_num)
|
||||||
{
|
{
|
||||||
GstClockTime ts = GST_CLOCK_TIME_NONE;
|
GstClockTime ts = GST_CLOCK_TIME_NONE;
|
||||||
const gchar *text_start = NULL;
|
const gchar *text_start = NULL;
|
||||||
gboolean multiline = FALSE;
|
|
||||||
gchar *ret = NULL;
|
gchar *ret = NULL;
|
||||||
gchar divc = '\0';
|
gchar divc = '\0';
|
||||||
guint h, m, s, l = 1;
|
guint h, m, s, l = 1;
|
||||||
|
@ -94,7 +93,6 @@ tmplayer_parse_line (ParserState * state, const gchar * line, guint line_num)
|
||||||
GST_LOG ("multiline format %u %u %u %u", h, m, s, l);
|
GST_LOG ("multiline format %u %u %u %u", h, m, s, l);
|
||||||
ts = GST_SECOND * ((((h * 60) + m) * 60) + s);
|
ts = GST_SECOND * ((((h * 60) + m) * 60) + s);
|
||||||
text_start = strchr (line, '=');
|
text_start = strchr (line, '=');
|
||||||
multiline = TRUE;
|
|
||||||
} else if (sscanf (line, "%u:%02u:%02u%c", &h, &m, &s, &divc) == 4 &&
|
} else if (sscanf (line, "%u:%02u:%02u%c", &h, &m, &s, &divc) == 4 &&
|
||||||
(divc == '=' || divc == ':')) {
|
(divc == '=' || divc == ':')) {
|
||||||
GST_LOG ("single line format %u %u %u %u %c", h, m, s, l, divc);
|
GST_LOG ("single line format %u %u %u %u %c", h, m, s, l, divc);
|
||||||
|
|
|
@ -812,7 +812,7 @@ gst_multi_fd_sink_add_full (GstMultiFdSink * sink, int fd,
|
||||||
GstTCPClient *client;
|
GstTCPClient *client;
|
||||||
GList *clink;
|
GList *clink;
|
||||||
GTimeVal now;
|
GTimeVal now;
|
||||||
gint flags, res;
|
gint flags;
|
||||||
struct stat statbuf;
|
struct stat statbuf;
|
||||||
|
|
||||||
GST_DEBUG_OBJECT (sink, "[fd %5d] adding client, sync_method %d, "
|
GST_DEBUG_OBJECT (sink, "[fd %5d] adding client, sync_method %d, "
|
||||||
|
@ -867,7 +867,11 @@ gst_multi_fd_sink_add_full (GstMultiFdSink * sink, int fd,
|
||||||
sink->clients_cookie++;
|
sink->clients_cookie++;
|
||||||
|
|
||||||
/* set the socket to non blocking */
|
/* set the socket to non blocking */
|
||||||
res = fcntl (fd, F_SETFL, O_NONBLOCK);
|
if (fcntl (fd, F_SETFL, O_NONBLOCK) < 0) {
|
||||||
|
GST_ERROR_OBJECT (sink, "failed to make socket %d non-blocking: %s", fd,
|
||||||
|
g_strerror (errno));
|
||||||
|
}
|
||||||
|
|
||||||
/* we always read from a client */
|
/* we always read from a client */
|
||||||
gst_poll_add_fd (sink->fdset, &client->fd);
|
gst_poll_add_fd (sink->fdset, &client->fd);
|
||||||
|
|
||||||
|
@ -879,8 +883,7 @@ gst_multi_fd_sink_add_full (GstMultiFdSink * sink, int fd,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* figure out the mode, can't use send() for non sockets */
|
/* figure out the mode, can't use send() for non sockets */
|
||||||
res = fstat (fd, &statbuf);
|
if (fstat (fd, &statbuf) == 0 && S_ISSOCK (statbuf.st_mode)) {
|
||||||
if (S_ISSOCK (statbuf.st_mode)) {
|
|
||||||
client->is_socket = TRUE;
|
client->is_socket = TRUE;
|
||||||
setup_dscp_client (sink, client);
|
setup_dscp_client (sink, client);
|
||||||
}
|
}
|
||||||
|
@ -1775,7 +1778,6 @@ gst_multi_fd_sink_new_client (GstMultiFdSink * sink, GstTCPClient * client)
|
||||||
}
|
}
|
||||||
case GST_SYNC_METHOD_BURST_KEYFRAME:
|
case GST_SYNC_METHOD_BURST_KEYFRAME:
|
||||||
{
|
{
|
||||||
gboolean ok;
|
|
||||||
gint min_idx, max_idx;
|
gint min_idx, max_idx;
|
||||||
gint next_syncframe, prev_syncframe;
|
gint next_syncframe, prev_syncframe;
|
||||||
|
|
||||||
|
@ -1787,7 +1789,7 @@ gst_multi_fd_sink_new_client (GstMultiFdSink * sink, GstTCPClient * client)
|
||||||
* NEXT_KEYFRAME.
|
* NEXT_KEYFRAME.
|
||||||
*/
|
*/
|
||||||
/* gather burst limits */
|
/* gather burst limits */
|
||||||
ok = count_burst_unit (sink, &min_idx, client->burst_min_unit,
|
count_burst_unit (sink, &min_idx, client->burst_min_unit,
|
||||||
client->burst_min_value, &max_idx, client->burst_max_unit,
|
client->burst_min_value, &max_idx, client->burst_max_unit,
|
||||||
client->burst_max_value);
|
client->burst_max_value);
|
||||||
|
|
||||||
|
@ -1824,7 +1826,6 @@ gst_multi_fd_sink_new_client (GstMultiFdSink * sink, GstTCPClient * client)
|
||||||
}
|
}
|
||||||
case GST_SYNC_METHOD_BURST_WITH_KEYFRAME:
|
case GST_SYNC_METHOD_BURST_WITH_KEYFRAME:
|
||||||
{
|
{
|
||||||
gboolean ok;
|
|
||||||
gint min_idx, max_idx;
|
gint min_idx, max_idx;
|
||||||
gint next_syncframe;
|
gint next_syncframe;
|
||||||
|
|
||||||
|
@ -1835,7 +1836,7 @@ gst_multi_fd_sink_new_client (GstMultiFdSink * sink, GstTCPClient * client)
|
||||||
* amount of data up 'till min.
|
* amount of data up 'till min.
|
||||||
*/
|
*/
|
||||||
/* gather enough data to burst */
|
/* gather enough data to burst */
|
||||||
ok = count_burst_unit (sink, &min_idx, client->burst_min_unit,
|
count_burst_unit (sink, &min_idx, client->burst_min_unit,
|
||||||
client->burst_min_value, &max_idx, client->burst_max_unit,
|
client->burst_min_value, &max_idx, client->burst_max_unit,
|
||||||
client->burst_max_value);
|
client->burst_max_value);
|
||||||
|
|
||||||
|
|
|
@ -1018,7 +1018,7 @@ mp3_type_find_at_offset (GstTypeFind * tf, guint64 start_off,
|
||||||
while (found < GST_MP3_TYPEFIND_TRY_HEADERS) {
|
while (found < GST_MP3_TYPEFIND_TRY_HEADERS) {
|
||||||
guint32 head;
|
guint32 head;
|
||||||
guint length;
|
guint length;
|
||||||
guint prev_layer = 0, prev_bitrate = 0;
|
guint prev_layer = 0;
|
||||||
guint prev_channels = 0, prev_samplerate = 0;
|
guint prev_channels = 0, prev_samplerate = 0;
|
||||||
gboolean free = FALSE;
|
gboolean free = FALSE;
|
||||||
|
|
||||||
|
@ -1065,7 +1065,6 @@ mp3_type_find_at_offset (GstTypeFind * tf, guint64 start_off,
|
||||||
* be a freaking funky encoded mp3 though. We'll just not count
|
* be a freaking funky encoded mp3 though. We'll just not count
|
||||||
* this header*/
|
* this header*/
|
||||||
prev_layer = layer;
|
prev_layer = layer;
|
||||||
prev_bitrate = bitrate;
|
|
||||||
prev_channels = channels;
|
prev_channels = channels;
|
||||||
prev_samplerate = samplerate;
|
prev_samplerate = samplerate;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -340,6 +340,12 @@ gst_video_rate_setcaps (GstPad * pad, GstCaps * caps)
|
||||||
|
|
||||||
GST_DEBUG_OBJECT (videorate, "intersect %" GST_PTR_FORMAT, caps);
|
GST_DEBUG_OBJECT (videorate, "intersect %" GST_PTR_FORMAT, caps);
|
||||||
|
|
||||||
|
/* could turn up empty, due to e.g. colorspace etc */
|
||||||
|
if (gst_caps_get_size (caps) == 0) {
|
||||||
|
gst_caps_unref (caps);
|
||||||
|
goto no_transform;
|
||||||
|
}
|
||||||
|
|
||||||
/* take first possibility */
|
/* take first possibility */
|
||||||
gst_caps_truncate (caps);
|
gst_caps_truncate (caps);
|
||||||
structure = gst_caps_get_structure (caps, 0);
|
structure = gst_caps_get_structure (caps, 0);
|
||||||
|
|
|
@ -85,7 +85,6 @@ vs_image_scale_linear_RGBA (const VSImage * dest, const VSImage * src,
|
||||||
int y_increment;
|
int y_increment;
|
||||||
int x_increment;
|
int x_increment;
|
||||||
int y1;
|
int y1;
|
||||||
int y2;
|
|
||||||
int i;
|
int i;
|
||||||
int j;
|
int j;
|
||||||
int x;
|
int x;
|
||||||
|
@ -106,7 +105,6 @@ vs_image_scale_linear_RGBA (const VSImage * dest, const VSImage * src,
|
||||||
#define LINE(x) ((tmpbuf) + (dest_size)*((x)&1))
|
#define LINE(x) ((tmpbuf) + (dest_size)*((x)&1))
|
||||||
|
|
||||||
acc = 0;
|
acc = 0;
|
||||||
y2 = -1;
|
|
||||||
gst_videoscale_orc_resample_bilinear_u32 (LINE (0), src->pixels,
|
gst_videoscale_orc_resample_bilinear_u32 (LINE (0), src->pixels,
|
||||||
0, x_increment, dest->width);
|
0, x_increment, dest->width);
|
||||||
y1 = 0;
|
y1 = 0;
|
||||||
|
@ -574,7 +572,6 @@ vs_image_scale_linear_Y (const VSImage * dest, const VSImage * src,
|
||||||
int j;
|
int j;
|
||||||
int x;
|
int x;
|
||||||
int dest_size;
|
int dest_size;
|
||||||
int xacc;
|
|
||||||
|
|
||||||
if (dest->height == 1)
|
if (dest->height == 1)
|
||||||
y_increment = 0;
|
y_increment = 0;
|
||||||
|
@ -592,7 +589,6 @@ vs_image_scale_linear_Y (const VSImage * dest, const VSImage * src,
|
||||||
tmp2 = tmpbuf + dest_size;
|
tmp2 = tmpbuf + dest_size;
|
||||||
|
|
||||||
acc = 0;
|
acc = 0;
|
||||||
xacc = 0;
|
|
||||||
y2 = -1;
|
y2 = -1;
|
||||||
gst_videoscale_orc_resample_bilinear_u8 (tmp1, src->pixels,
|
gst_videoscale_orc_resample_bilinear_u8 (tmp1, src->pixels,
|
||||||
0, x_increment, dest->width);
|
0, x_increment, dest->width);
|
||||||
|
@ -607,7 +603,6 @@ vs_image_scale_linear_Y (const VSImage * dest, const VSImage * src,
|
||||||
} else if (j == y2) {
|
} else if (j == y2) {
|
||||||
memcpy (dest->pixels + i * dest->stride, tmp2, dest_size);
|
memcpy (dest->pixels + i * dest->stride, tmp2, dest_size);
|
||||||
} else {
|
} else {
|
||||||
xacc = 0;
|
|
||||||
gst_videoscale_orc_resample_bilinear_u8 (tmp1,
|
gst_videoscale_orc_resample_bilinear_u8 (tmp1,
|
||||||
src->pixels + j * src->stride, 0, x_increment, dest->width);
|
src->pixels + j * src->stride, 0, x_increment, dest->width);
|
||||||
y1 = j;
|
y1 = j;
|
||||||
|
@ -616,7 +611,6 @@ vs_image_scale_linear_Y (const VSImage * dest, const VSImage * src,
|
||||||
} else {
|
} else {
|
||||||
if (j == y1) {
|
if (j == y1) {
|
||||||
if (j + 1 != y2) {
|
if (j + 1 != y2) {
|
||||||
xacc = 0;
|
|
||||||
gst_videoscale_orc_resample_bilinear_u8 (tmp2,
|
gst_videoscale_orc_resample_bilinear_u8 (tmp2,
|
||||||
src->pixels + (j + 1) * src->stride, 0, x_increment, dest->width);
|
src->pixels + (j + 1) * src->stride, 0, x_increment, dest->width);
|
||||||
y2 = j + 1;
|
y2 = j + 1;
|
||||||
|
@ -629,7 +623,6 @@ vs_image_scale_linear_Y (const VSImage * dest, const VSImage * src,
|
||||||
}
|
}
|
||||||
} else if (j == y2) {
|
} else if (j == y2) {
|
||||||
if (j + 1 != y1) {
|
if (j + 1 != y1) {
|
||||||
xacc = 0;
|
|
||||||
gst_videoscale_orc_resample_bilinear_u8 (tmp1,
|
gst_videoscale_orc_resample_bilinear_u8 (tmp1,
|
||||||
src->pixels + (j + 1) * src->stride, 0, x_increment, dest->width);
|
src->pixels + (j + 1) * src->stride, 0, x_increment, dest->width);
|
||||||
y1 = j + 1;
|
y1 = j + 1;
|
||||||
|
@ -1098,7 +1091,6 @@ vs_image_scale_linear_AYUV64 (const VSImage * dest, const VSImage * src,
|
||||||
int y_increment;
|
int y_increment;
|
||||||
int x_increment;
|
int x_increment;
|
||||||
int y1;
|
int y1;
|
||||||
int y2;
|
|
||||||
int i;
|
int i;
|
||||||
int j;
|
int j;
|
||||||
int x;
|
int x;
|
||||||
|
@ -1121,7 +1113,6 @@ vs_image_scale_linear_AYUV64 (const VSImage * dest, const VSImage * src,
|
||||||
#define LINE(x) ((guint16 *)((tmpbuf) + (dest_size)*((x)&1)))
|
#define LINE(x) ((guint16 *)((tmpbuf) + (dest_size)*((x)&1)))
|
||||||
|
|
||||||
acc = 0;
|
acc = 0;
|
||||||
y2 = -1;
|
|
||||||
//gst_videoscale_orc_resample_bilinear_u64 (LINE (0), src->pixels,
|
//gst_videoscale_orc_resample_bilinear_u64 (LINE (0), src->pixels,
|
||||||
// 0, x_increment, dest->width);
|
// 0, x_increment, dest->width);
|
||||||
xacc = 0;
|
xacc = 0;
|
||||||
|
|
|
@ -171,13 +171,7 @@ VALGRIND_TO_FIX = \
|
||||||
noinst_PROGRAMS = $(check_libvisual)
|
noinst_PROGRAMS = $(check_libvisual)
|
||||||
|
|
||||||
noinst_HEADERS = \
|
noinst_HEADERS = \
|
||||||
libs/struct_i386.h
|
libs/struct_*.h
|
||||||
# libs/struct_arm.h \
|
|
||||||
# libs/struct_hppa.h \
|
|
||||||
# libs/struct_ppc32.h \
|
|
||||||
# libs/struct_ppc64.h \
|
|
||||||
# libs/struct_sparc.h \
|
|
||||||
# libs/struct_x86_64.h
|
|
||||||
|
|
||||||
AM_CFLAGS = -I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
|
AM_CFLAGS = -I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
|
||||||
$(GST_CFLAGS) $(GST_CHECK_CFLAGS) \
|
$(GST_CFLAGS) $(GST_CHECK_CFLAGS) \
|
||||||
|
|
|
@ -359,15 +359,15 @@ GST_START_TEST (test_encodebin_sink_pads_multiple_dynamic)
|
||||||
fail_unless_equals_int (gst_element_set_state (ebin, GST_STATE_PAUSED),
|
fail_unless_equals_int (gst_element_set_state (ebin, GST_STATE_PAUSED),
|
||||||
GST_STATE_CHANGE_SUCCESS);
|
GST_STATE_CHANGE_SUCCESS);
|
||||||
|
|
||||||
|
/* Set back to NULL */
|
||||||
|
fail_unless_equals_int (gst_element_set_state (ebin, GST_STATE_NULL),
|
||||||
|
GST_STATE_CHANGE_SUCCESS);
|
||||||
|
|
||||||
gst_element_release_request_pad (GST_ELEMENT (ebin), sinkpadvorbis);
|
gst_element_release_request_pad (GST_ELEMENT (ebin), sinkpadvorbis);
|
||||||
gst_object_unref (sinkpadvorbis);
|
gst_object_unref (sinkpadvorbis);
|
||||||
gst_element_release_request_pad (GST_ELEMENT (ebin), sinkpadtheora);
|
gst_element_release_request_pad (GST_ELEMENT (ebin), sinkpadtheora);
|
||||||
gst_object_unref (sinkpadtheora);
|
gst_object_unref (sinkpadtheora);
|
||||||
|
|
||||||
/* Set back to NULL */
|
|
||||||
fail_unless_equals_int (gst_element_set_state (ebin, GST_STATE_NULL),
|
|
||||||
GST_STATE_CHANGE_SUCCESS);
|
|
||||||
|
|
||||||
gst_object_unref (ebin);
|
gst_object_unref (ebin);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -604,13 +604,13 @@ GST_START_TEST (test_encodebin_render_audio_dynamic)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
gst_element_release_request_pad (GST_ELEMENT (ebin), sinkpad);
|
|
||||||
gst_object_unref (sinkpad);
|
|
||||||
|
|
||||||
/* Set back to NULL */
|
/* Set back to NULL */
|
||||||
fail_unless_equals_int (gst_element_set_state (pipeline, GST_STATE_NULL),
|
fail_unless_equals_int (gst_element_set_state (pipeline, GST_STATE_NULL),
|
||||||
GST_STATE_CHANGE_SUCCESS);
|
GST_STATE_CHANGE_SUCCESS);
|
||||||
|
|
||||||
|
gst_element_release_request_pad (GST_ELEMENT (ebin), sinkpad);
|
||||||
|
gst_object_unref (sinkpad);
|
||||||
|
|
||||||
gst_object_unref (bus);
|
gst_object_unref (bus);
|
||||||
|
|
||||||
gst_object_unref (pipeline);
|
gst_object_unref (pipeline);
|
||||||
|
@ -745,15 +745,15 @@ GST_START_TEST (test_encodebin_render_audio_video_dynamic)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Set back to NULL */
|
||||||
|
fail_unless_equals_int (gst_element_set_state (pipeline, GST_STATE_NULL),
|
||||||
|
GST_STATE_CHANGE_SUCCESS);
|
||||||
|
|
||||||
gst_element_release_request_pad (GST_ELEMENT (ebin), sinkpad1);
|
gst_element_release_request_pad (GST_ELEMENT (ebin), sinkpad1);
|
||||||
gst_object_unref (sinkpad1);
|
gst_object_unref (sinkpad1);
|
||||||
gst_element_release_request_pad (GST_ELEMENT (ebin), sinkpad2);
|
gst_element_release_request_pad (GST_ELEMENT (ebin), sinkpad2);
|
||||||
gst_object_unref (sinkpad2);
|
gst_object_unref (sinkpad2);
|
||||||
|
|
||||||
/* Set back to NULL */
|
|
||||||
fail_unless_equals_int (gst_element_set_state (pipeline, GST_STATE_NULL),
|
|
||||||
GST_STATE_CHANGE_SUCCESS);
|
|
||||||
|
|
||||||
gst_object_unref (bus);
|
gst_object_unref (bus);
|
||||||
|
|
||||||
gst_object_unref (pipeline);
|
gst_object_unref (pipeline);
|
||||||
|
@ -867,6 +867,8 @@ GST_START_TEST (test_encodebin_reuse)
|
||||||
_test_encodebin_reuse (prof2, prof3);
|
_test_encodebin_reuse (prof2, prof3);
|
||||||
|
|
||||||
gst_encoding_profile_unref (prof1);
|
gst_encoding_profile_unref (prof1);
|
||||||
|
gst_encoding_profile_unref (prof2);
|
||||||
|
gst_encoding_profile_unref (prof3);
|
||||||
};
|
};
|
||||||
|
|
||||||
GST_END_TEST;
|
GST_END_TEST;
|
||||||
|
|
|
@ -178,7 +178,7 @@ GST_END_TEST;
|
||||||
"%f does not match expected %f", ___d, d); \
|
"%f does not match expected %f", ___d, d); \
|
||||||
}
|
}
|
||||||
|
|
||||||
GST_START_TEST (test_muscibrainz_tag_registration)
|
GST_START_TEST (test_musicbrainz_tag_registration)
|
||||||
{
|
{
|
||||||
GstTagList *list;
|
GstTagList *list;
|
||||||
|
|
||||||
|
@ -957,6 +957,8 @@ GST_START_TEST (test_xmp_tags_serialization_deserialization)
|
||||||
GDate *date;
|
GDate *date;
|
||||||
GstDateTime *datetime;
|
GstDateTime *datetime;
|
||||||
|
|
||||||
|
gst_tag_register_musicbrainz_tags ();
|
||||||
|
|
||||||
g_value_init (&value, G_TYPE_STRING);
|
g_value_init (&value, G_TYPE_STRING);
|
||||||
g_value_set_static_string (&value, "my string");
|
g_value_set_static_string (&value, "my string");
|
||||||
do_simple_xmp_tag_serialization_deserialization (GST_TAG_ARTIST, &value);
|
do_simple_xmp_tag_serialization_deserialization (GST_TAG_ARTIST, &value);
|
||||||
|
@ -1067,6 +1069,16 @@ GST_START_TEST (test_xmp_tags_serialization_deserialization)
|
||||||
g_value_set_double (&value, 359.99);
|
g_value_set_double (&value, 359.99);
|
||||||
do_simple_xmp_tag_serialization_deserialization
|
do_simple_xmp_tag_serialization_deserialization
|
||||||
(GST_TAG_GEO_LOCATION_CAPTURE_DIRECTION, &value);
|
(GST_TAG_GEO_LOCATION_CAPTURE_DIRECTION, &value);
|
||||||
|
|
||||||
|
g_value_set_double (&value, 0.0);
|
||||||
|
do_simple_xmp_tag_serialization_deserialization
|
||||||
|
(GST_TAG_CAPTURING_EXPOSURE_COMPENSATION, &value);
|
||||||
|
g_value_set_double (&value, 1.0);
|
||||||
|
do_simple_xmp_tag_serialization_deserialization
|
||||||
|
(GST_TAG_CAPTURING_EXPOSURE_COMPENSATION, &value);
|
||||||
|
g_value_set_double (&value, -2.5);
|
||||||
|
do_simple_xmp_tag_serialization_deserialization
|
||||||
|
(GST_TAG_CAPTURING_EXPOSURE_COMPENSATION, &value);
|
||||||
g_value_unset (&value);
|
g_value_unset (&value);
|
||||||
|
|
||||||
g_value_init (&value, GST_TYPE_DATE);
|
g_value_init (&value, GST_TYPE_DATE);
|
||||||
|
@ -1538,6 +1550,16 @@ GST_START_TEST (test_exif_tags_serialization_deserialization)
|
||||||
g_value_set_double (&value, 600.0);
|
g_value_set_double (&value, 600.0);
|
||||||
do_simple_exif_tag_serialization_deserialization
|
do_simple_exif_tag_serialization_deserialization
|
||||||
(GST_TAG_IMAGE_VERTICAL_PPI, &value);
|
(GST_TAG_IMAGE_VERTICAL_PPI, &value);
|
||||||
|
|
||||||
|
g_value_set_double (&value, 0.0);
|
||||||
|
do_simple_exif_tag_serialization_deserialization
|
||||||
|
(GST_TAG_CAPTURING_EXPOSURE_COMPENSATION, &value);
|
||||||
|
g_value_set_double (&value, 1.0);
|
||||||
|
do_simple_exif_tag_serialization_deserialization
|
||||||
|
(GST_TAG_CAPTURING_EXPOSURE_COMPENSATION, &value);
|
||||||
|
g_value_set_double (&value, -2.5);
|
||||||
|
do_simple_exif_tag_serialization_deserialization
|
||||||
|
(GST_TAG_CAPTURING_EXPOSURE_COMPENSATION, &value);
|
||||||
g_value_unset (&value);
|
g_value_unset (&value);
|
||||||
|
|
||||||
g_value_init (&value, G_TYPE_INT);
|
g_value_init (&value, G_TYPE_INT);
|
||||||
|
@ -1615,7 +1637,7 @@ tag_suite (void)
|
||||||
TCase *tc_chain = tcase_create ("general");
|
TCase *tc_chain = tcase_create ("general");
|
||||||
|
|
||||||
suite_add_tcase (s, tc_chain);
|
suite_add_tcase (s, tc_chain);
|
||||||
tcase_add_test (tc_chain, test_muscibrainz_tag_registration);
|
tcase_add_test (tc_chain, test_musicbrainz_tag_registration);
|
||||||
tcase_add_test (tc_chain, test_parse_extended_comment);
|
tcase_add_test (tc_chain, test_parse_extended_comment);
|
||||||
tcase_add_test (tc_chain, test_vorbis_tags);
|
tcase_add_test (tc_chain, test_vorbis_tags);
|
||||||
tcase_add_test (tc_chain, test_id3_tags);
|
tcase_add_test (tc_chain, test_id3_tags);
|
||||||
|
|
|
@ -27,7 +27,7 @@ static gboolean
|
||||||
remove_range_foreach (GQuark field_id, const GValue * value, GstStructure * st)
|
remove_range_foreach (GQuark field_id, const GValue * value, GstStructure * st)
|
||||||
{
|
{
|
||||||
GType ftype = G_VALUE_TYPE (value);
|
GType ftype = G_VALUE_TYPE (value);
|
||||||
const gchar *fname;
|
/* const gchar *fname; */
|
||||||
|
|
||||||
if (ftype == GST_TYPE_INT_RANGE || ftype == GST_TYPE_DOUBLE_RANGE ||
|
if (ftype == GST_TYPE_INT_RANGE || ftype == GST_TYPE_DOUBLE_RANGE ||
|
||||||
ftype == GST_TYPE_FRACTION_RANGE) {
|
ftype == GST_TYPE_FRACTION_RANGE) {
|
||||||
|
@ -35,8 +35,7 @@ remove_range_foreach (GQuark field_id, const GValue * value, GstStructure * st)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
fname = g_quark_to_string (field_id);
|
/* fname = g_quark_to_string (field_id); */
|
||||||
|
|
||||||
/* if (strstr (fname, "framerate") || strstr (fname, "pixel-aspect-ratio") || */
|
/* if (strstr (fname, "framerate") || strstr (fname, "pixel-aspect-ratio") || */
|
||||||
/* strstr (fname, "rate")) { */
|
/* strstr (fname, "rate")) { */
|
||||||
/* gst_structure_remove_field (st, g_quark_to_string (field_id)); */
|
/* gst_structure_remove_field (st, g_quark_to_string (field_id)); */
|
||||||
|
|
|
@ -119,6 +119,7 @@ main (int argc, char *argv[])
|
||||||
|
|
||||||
gtk_main ();
|
gtk_main ();
|
||||||
|
|
||||||
|
g_source_remove (watch_id);
|
||||||
gst_element_set_state (pipeline, GST_STATE_NULL);
|
gst_element_set_state (pipeline, GST_STATE_NULL);
|
||||||
gst_object_unref (pipeline);
|
gst_object_unref (pipeline);
|
||||||
|
|
||||||
|
|
|
@ -156,6 +156,7 @@ main (int argc, char *argv[])
|
||||||
|
|
||||||
g_main_loop_run (loop);
|
g_main_loop_run (loop);
|
||||||
|
|
||||||
|
g_source_remove (watch_id);
|
||||||
gst_element_set_state (pipeline, GST_STATE_NULL);
|
gst_element_set_state (pipeline, GST_STATE_NULL);
|
||||||
gst_object_unref (pipeline);
|
gst_object_unref (pipeline);
|
||||||
|
|
||||||
|
|
|
@ -2119,6 +2119,10 @@ step_cb (GtkButton * button, gpointer data)
|
||||||
event = gst_event_new_step (format, amount, rate, flush, FALSE);
|
event = gst_event_new_step (format, amount, rate, flush, FALSE);
|
||||||
|
|
||||||
res = send_event (event);
|
res = send_event (event);
|
||||||
|
|
||||||
|
if (!res) {
|
||||||
|
g_print ("Sending step event failed\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -2658,6 +2662,8 @@ read_joystick (GIOChannel * source, GIOCondition condition, gpointer user_data)
|
||||||
g_print ("error reading joystick, read %u bytes of %u\n",
|
g_print ("error reading joystick, read %u bytes of %u\n",
|
||||||
(guint) bytes_read, (guint) sizeof (struct js_event));
|
(guint) bytes_read, (guint) sizeof (struct js_event));
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
} else if (result != G_IO_STATUS_NORMAL) {
|
||||||
|
g_print ("reading from joystick returned status %d", result);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (js->type & ~JS_EVENT_INIT) {
|
switch (js->type & ~JS_EVENT_INIT) {
|
||||||
|
|
|
@ -2106,6 +2106,10 @@ step_cb (GtkButton * button, gpointer data)
|
||||||
event = gst_event_new_step (format, amount, rate, flush, FALSE);
|
event = gst_event_new_step (format, amount, rate, flush, FALSE);
|
||||||
|
|
||||||
res = send_event (event);
|
res = send_event (event);
|
||||||
|
|
||||||
|
if (!res) {
|
||||||
|
g_print ("Sending step event failed\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
Loading…
Reference in a new issue