Example #1
0
static void
gst_cmml_enc_finalize (GObject * object)
{
  GstCmmlEnc *enc = GST_CMML_ENC (object);

  if (enc->tracks) {
    gst_cmml_track_list_destroy (enc->tracks);
    enc->tracks = NULL;
  }

  G_OBJECT_CLASS (parent_class)->finalize (object);
}
Example #2
0
static void
gst_cmml_dec_finalize (GObject * object)
{
  GstCmmlDec *dec = GST_CMML_DEC (object);

  if (dec->tracks) {
    gst_cmml_track_list_destroy (dec->tracks);
    dec->tracks = NULL;
  }

  G_OBJECT_CLASS (parent_class)->finalize (object);
}
Example #3
0
static GstStateChangeReturn
gst_cmml_enc_change_state (GstElement * element, GstStateChange transition)
{
  GstCmmlEnc *enc = GST_CMML_ENC (element);
  GstStateChangeReturn res;

  switch (transition) {
    case GST_STATE_CHANGE_READY_TO_PAUSED:
      enc->parser = gst_cmml_parser_new (GST_CMML_PARSER_ENCODE);
      enc->parser->user_data = enc;
      enc->parser->preamble_callback =
          (GstCmmlParserPreambleCallback) gst_cmml_enc_parse_preamble;
      enc->parser->head_callback =
          (GstCmmlParserHeadCallback) gst_cmml_enc_parse_tag_head;
      enc->parser->clip_callback =
          (GstCmmlParserClipCallback) gst_cmml_enc_parse_tag_clip;
      enc->parser->cmml_end_callback =
          (GstCmmlParserCmmlEndCallback) gst_cmml_enc_parse_end_tag;
      enc->tracks = gst_cmml_track_list_new ();
      enc->sent_headers = FALSE;
      enc->sent_eos = FALSE;
      enc->flow_return = GST_FLOW_OK;
      break;
    default:
      break;
  }

  res = parent_class->change_state (element, transition);

  switch (transition) {
    case GST_STATE_CHANGE_PAUSED_TO_READY:
    {
      gst_cmml_track_list_destroy (enc->tracks);
      enc->tracks = NULL;
      g_free (enc->preamble);
      enc->preamble = NULL;
      gst_cmml_parser_free (enc->parser);
      break;
    }
    default:
      break;
  }

  return res;
}
Example #4
0
static GstStateChangeReturn
gst_cmml_dec_change_state (GstElement * element, GstStateChange transition)
{
  GstCmmlDec *dec = GST_CMML_DEC (element);
  GstStateChangeReturn res;

  switch (transition) {
    case GST_STATE_CHANGE_READY_TO_PAUSED:
      dec->parser = gst_cmml_parser_new (GST_CMML_PARSER_DECODE);
      dec->parser->user_data = dec;
      dec->parser->preamble_callback =
          (GstCmmlParserPreambleCallback) gst_cmml_dec_parse_preamble;
      dec->parser->head_callback =
          (GstCmmlParserHeadCallback) gst_cmml_dec_parse_head;
      dec->parser->clip_callback =
          (GstCmmlParserClipCallback) gst_cmml_dec_parse_clip;
      dec->major = -1;
      dec->minor = -1;
      dec->granulerate_n = -1;
      dec->granulerate_d = -1;
      dec->granuleshift = 0;
      dec->granulepos = 0;
      dec->flow_return = GST_FLOW_OK;
      dec->sent_root = FALSE;
      dec->tracks = gst_cmml_track_list_new ();
      break;
    default:
      break;
  }

  res = parent_class->change_state (element, transition);

  switch (transition) {
    case GST_STATE_CHANGE_PAUSED_TO_READY:
      gst_cmml_parser_free (dec->parser);
      gst_cmml_track_list_destroy (dec->tracks);
      dec->tracks = NULL;
      break;
    default:
      break;
  }

  return res;
}