static int sap_write_close(AVFormatContext *s)

{

    struct SAPState *sap = s->priv_data;

    int i;



    for (i = 0; i < s->nb_streams; i++) {

        AVFormatContext *rtpctx = s->streams[i]->priv_data;

        if (!rtpctx)

            continue;

        av_write_trailer(rtpctx);

        url_fclose(rtpctx->pb);

        av_metadata_free(&rtpctx->streams[0]->metadata);

        av_metadata_free(&rtpctx->metadata);


        av_free(rtpctx->streams[0]);

        av_free(rtpctx);

        s->streams[i]->priv_data = NULL;

    }



    if (sap->last_time && sap->ann && sap->ann_fd) {

        sap->ann[0] |= 4; /* Session deletion*/

        url_write(sap->ann_fd, sap->ann, sap->ann_size);

    }



    av_freep(&sap->ann);

    if (sap->ann_fd)

        url_close(sap->ann_fd);

    ff_network_close();

    return 0;

}
static int sap_write_close(AVFormatContext *s)

{

    struct SAPState *sap = s->priv_data;

    int i;



    for (i = 0; i < s->nb_streams; i++) {

        AVFormatContext *rtpctx = s->streams[i]->priv_data;

        if (!rtpctx)

            continue;

        av_write_trailer(rtpctx);

        url_fclose(rtpctx->pb);

        av_metadata_free(&rtpctx->streams[0]->metadata);

        av_metadata_free(&rtpctx->metadata);


        av_free(rtpctx->streams[0]);

        av_free(rtpctx);

        s->streams[i]->priv_data = NULL;

    }



    if (sap->last_time && sap->ann && sap->ann_fd) {

        sap->ann[0] |= 4; 

        url_write(sap->ann_fd, sap->ann, sap->ann_size);

    }



    av_freep(&sap->ann);

    if (sap->ann_fd)

        url_close(sap->ann_fd);

    ff_network_close();

    return 0;

}
static int FUNC_0(AVFormatContext *VAR_0)

{

    struct SAPState *VAR_1 = VAR_0->priv_data;

    int VAR_2;



    for (VAR_2 = 0; VAR_2 < VAR_0->nb_streams; VAR_2++) {

        AVFormatContext *rtpctx = VAR_0->streams[VAR_2]->priv_data;

        if (!rtpctx)

            continue;

        av_write_trailer(rtpctx);

        url_fclose(rtpctx->pb);

        av_metadata_free(&rtpctx->streams[0]->metadata);

        av_metadata_free(&rtpctx->metadata);


        av_free(rtpctx->streams[0]);

        av_free(rtpctx);

        VAR_0->streams[VAR_2]->priv_data = NULL;

    }



    if (VAR_1->last_time && VAR_1->ann && VAR_1->ann_fd) {

        VAR_1->ann[0] |= 4; 

        url_write(VAR_1->ann_fd, VAR_1->ann, VAR_1->ann_size);

    }



    av_freep(&VAR_1->ann);

    if (VAR_1->ann_fd)

        url_close(VAR_1->ann_fd);

    ff_network_close();

    return 0;

}
static int FUNC_0(AVFormatContext *VAR_0)
{ struct SAPState *VAR_1 = VAR_0->priv_data; int VAR_2; for (VAR_2 = 0; VAR_2 < VAR_0->nb_streams; VAR_2++) { AVFormatContext *rtpctx = VAR_0->streams[VAR_2]->priv_data; if (!rtpctx)
continue; av_write_trailer(rtpctx); url_fclose(rtpctx->pb); av_metadata_free(&rtpctx->streams[0]->metadata); av_metadata_free(&rtpctx->metadata); av_free(rtpctx->streams[0]); av_free(rtpctx); VAR_0->streams[VAR_2]->priv_data = NULL; } if (VAR_1->last_time && VAR_1->ann && VAR_1->ann_fd) { VAR_1->ann[0] |= 4; url_write(VAR_1->ann_fd, VAR_1->ann, VAR_1->ann_size); } av_freep(&VAR_1->ann); if (VAR_1->ann_fd)
url_close(VAR_1->ann_fd); ff_network_close(); return 0; }