Esempio n. 1
0
static int64_t mmsh_read_seek(URLContext *h, int stream_index,
                        int64_t timestamp, int flags)
{
    MMSHContext *mmsh_old = h->priv_data;
    MMSHContext *mmsh     = av_mallocz(sizeof(*mmsh));
    int ret;

    if (!mmsh)
        return AVERROR(ENOMEM);

    h->priv_data = mmsh;
    ret= mmsh_open_internal(h, mmsh_old->location, 0, FFMAX(timestamp, 0), 0);
    if(ret>=0){
        h->priv_data = mmsh_old;
        mmsh_close(h);
        h->priv_data = mmsh;
        av_free(mmsh_old);
        mmsh->mms.asf_header_read_size = mmsh->mms.asf_header_size;
    }else {
        h->priv_data = mmsh_old;
        av_free(mmsh);
    }

    return ret;
}
Esempio n. 2
0
static int mmsh_open(URLContext *h, const char *uri, int flags)
{
    int ret = mmsh_open_internal(h, uri, flags, 0, 0);
    if (ret < 0)
        mmsh_close(h);
    return ret;
}
Esempio n. 3
0
static int64_t mmsh_read_seek(URLContext *h, int stream_index,
                        int64_t timestamp, int flags)
{
    MMSHContext *mmsh = h->priv_data;
    MMSContext *mms   = &mmsh->mms;
    int ret;

    ret= mmsh_open_internal(h, mmsh->location, 0, FFMAX(timestamp, 0), 0);

    if(ret>=0){
        if (mms->mms_hd)
            ffurl_close(mms->mms_hd);
        av_freep(&mms->streams);
        av_freep(&mms->asf_header);
        av_free(mmsh);
        mmsh = h->priv_data;
        mms   = &mmsh->mms;
        mms->asf_header_read_size= mms->asf_header_size;
    }else
        h->priv_data= mmsh;
    return ret;
}
Esempio n. 4
0
static int mmsh_open(URLContext *h, const char *uri, int flags)
{
    return mmsh_open_internal(h, uri, flags, 0, 0);
}