Beispiel #1
0
static void gavf_stream_free(gavf_stream_t * s)
{
    if(s->asrc)
        gavl_audio_source_destroy(s->asrc);
    if(s->vsrc)
        gavl_video_source_destroy(s->vsrc);
    if(s->psrc)
        gavl_packet_source_destroy(s->psrc);

    if(s->asink)
        gavl_audio_sink_destroy(s->asink);
    if(s->vsink)
        gavl_video_sink_destroy(s->vsink);
    if(s->psink)
        gavl_packet_sink_destroy(s->psink);
    if(s->pb)
        gavf_packet_buffer_destroy(s->pb);

    if(s->aframe)
    {
        gavl_audio_frame_null(s->aframe);
        gavl_audio_frame_destroy(s->aframe);
    }
    if(s->vframe)
    {
        gavl_video_frame_null(s->vframe);
        gavl_video_frame_destroy(s->vframe);
    }
}
Beispiel #2
0
void gavf_close(gavf_t * g)
{
    int i;
    if(g->wr)
    {
        if(g->streams)
        {
            /* Flush packets if any */
            gavf_flush_packets(g, NULL);

            /* Append final sync header */
            write_sync_header(g, -1, NULL);
        }

        /* Write footer */

        if(!gavf_footer_write(g))
            return;
    }

    /* Free stuff */

    if(g->streams)
    {
        for(i = 0; i < g->ph.num_streams; i++)
            gavf_stream_free(&g->streams[i]);
        free(g->streams);
    }
    gavf_sync_index_free(&g->si);
    gavf_packet_index_free(&g->pi);
    gavf_program_header_free(&g->ph);

    if(g->cl)
        gavl_chapter_list_destroy(g->cl);

    if(g->write_vframe)
    {
        gavl_video_frame_null(g->write_vframe);
        gavl_video_frame_destroy(g->write_vframe);
    }

    if(g->write_aframe)
    {
        gavl_audio_frame_null(g->write_aframe);
        gavl_audio_frame_destroy(g->write_aframe);
    }

    if(g->sync_pts)
        free(g->sync_pts);

    gavl_packet_free(&g->write_pkt);

    gavf_buffer_free(&g->pkt_buf);
    gavf_buffer_free(&g->meta_buf);
    gavl_metadata_free(&g->metadata);

    free(g);
}
Beispiel #3
0
static void close_gavf_audio(bgav_stream_t * s)
  {
  gavf_audio_t * priv = s->decoder_priv;
  
  if(priv->frame)
    {
    gavl_audio_frame_null(priv->frame);
    gavl_audio_frame_destroy(priv->frame);
    }
  free(priv);
  }