亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? http.c

?? arm平臺下的H264編碼和解碼源代碼
?? C
字號:
/* * HTTP protocol for ffmpeg client * Copyright (c) 2000, 2001 Fabrice Bellard. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */#include "avformat.h"#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#ifndef __BEOS__# include <arpa/inet.h>#else# include "barpainet.h"#endif#include <netdb.h>/* XXX: POST protocol is not completly implemented because ffmpeg use   only a subset of it *///#define DEBUG/* used for protocol handling */#define BUFFER_SIZE 1024#define URL_SIZE    4096typedef struct {    URLContext *hd;    unsigned char buffer[BUFFER_SIZE], *buf_ptr, *buf_end;    int line_count;    int http_code;    char location[URL_SIZE];} HTTPContext;static int http_connect(URLContext *h, const char *path, const char *hoststr);static int http_write(URLContext *h, uint8_t *buf, int size);/* return non zero if error */static int http_open(URLContext *h, const char *uri, int flags){    const char *path, *proxy_path;    char hostname[1024], hoststr[1024];    char path1[1024];    char buf[1024];    int port, use_proxy, err;    HTTPContext *s;    URLContext *hd = NULL;    h->is_streamed = 1;    s = av_malloc(sizeof(HTTPContext));    if (!s) {        return -ENOMEM;    }    h->priv_data = s;    proxy_path = getenv("http_proxy");    use_proxy = (proxy_path != NULL) && !getenv("no_proxy") &&         strstart(proxy_path, "http://", NULL);    /* fill the dest addr */ redo:    /* needed in any case to build the host string */    url_split(NULL, 0, hostname, sizeof(hostname), &port,               path1, sizeof(path1), uri);    if (port > 0) {        snprintf(hoststr, sizeof(hoststr), "%s:%d", hostname, port);    } else {        pstrcpy(hoststr, sizeof(hoststr), hostname);    }    if (use_proxy) {        url_split(NULL, 0, hostname, sizeof(hostname), &port,                   NULL, 0, proxy_path);        path = uri;    } else {        if (path1[0] == '\0')            path = "/";        else            path = path1;    }    if (port < 0)        port = 80;    snprintf(buf, sizeof(buf), "tcp://%s:%d", hostname, port);    err = url_open(&hd, buf, URL_RDWR);    if (err < 0)        goto fail;    s->hd = hd;    if (http_connect(h, path, hoststr) < 0)        goto fail;    if (s->http_code == 303 && s->location[0] != '\0') {        /* url moved, get next */        uri = s->location;        url_close(hd);        goto redo;    }    return 0; fail:    if (hd)        url_close(hd);    av_free(s);    return -EIO;}static int http_getc(HTTPContext *s){    int len;    if (s->buf_ptr >= s->buf_end) {        len = url_read(s->hd, s->buffer, BUFFER_SIZE);        if (len < 0) {            return -EIO;        } else if (len == 0) {            return -1;        } else {            s->buf_ptr = s->buffer;            s->buf_end = s->buffer + len;        }    }    return *s->buf_ptr++;}static int process_line(HTTPContext *s, char *line, int line_count){    char *tag, *p;        /* end of header */    if (line[0] == '\0')        return 0;    p = line;    if (line_count == 0) {        while (!isspace(*p) && *p != '\0')            p++;        while (isspace(*p))            p++;        s->http_code = strtol(p, NULL, 10);#ifdef DEBUG        printf("http_code=%d\n", s->http_code);#endif    } else {        while (*p != '\0' && *p != ':')            p++;        if (*p != ':')             return 1;                *p = '\0';        tag = line;        p++;        while (isspace(*p))            p++;        if (!strcmp(tag, "Location")) {            strcpy(s->location, p);        }    }    return 1;}static int http_connect(URLContext *h, const char *path, const char *hoststr){    HTTPContext *s = h->priv_data;    int post, err, ch;    char line[1024], *q;    /* send http header */    post = h->flags & URL_WRONLY;    snprintf(s->buffer, sizeof(s->buffer),             "%s %s HTTP/1.0\r\n"             "User-Agent: %s\r\n"             "Accept: */*\r\n"             "Host: %s\r\n"             "\r\n",             post ? "POST" : "GET",             path,             LIBAVFORMAT_IDENT,             hoststr);        if (http_write(h, s->buffer, strlen(s->buffer)) < 0)        return -EIO;            /* init input buffer */    s->buf_ptr = s->buffer;    s->buf_end = s->buffer;    s->line_count = 0;    s->location[0] = '\0';    if (post) {        sleep(1);        return 0;    }        /* wait for header */    q = line;    for(;;) {        ch = http_getc(s);        if (ch < 0)            return -EIO;        if (ch == '\n') {            /* process line */            if (q > line && q[-1] == '\r')                q--;            *q = '\0';#ifdef DEBUG            printf("header='%s'\n", line);#endif            err = process_line(s, line, s->line_count);            if (err < 0)                return err;            if (err == 0)                return 0;            s->line_count++;            q = line;        } else {            if ((q - line) < sizeof(line) - 1)                *q++ = ch;        }    }}static int http_read(URLContext *h, uint8_t *buf, int size){    HTTPContext *s = h->priv_data;    int len;    /* read bytes from input buffer first */    len = s->buf_end - s->buf_ptr;    if (len > 0) {        if (len > size)            len = size;        memcpy(buf, s->buf_ptr, len);        s->buf_ptr += len;    } else {        len = url_read(s->hd, buf, size);    }    return len;}/* used only when posting data */static int http_write(URLContext *h, uint8_t *buf, int size){    HTTPContext *s = h->priv_data;    return url_write(s->hd, buf, size);}static int http_close(URLContext *h){    HTTPContext *s = h->priv_data;    url_close(s->hd);    av_free(s);    return 0;}URLProtocol http_protocol = {    "http",    http_open,    http_read,    http_write,    NULL, /* seek */    http_close,};

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩毛片一二三区| 亚洲欧美经典视频| 日韩精品在线网站| 欧美久久一二区| 制服丝袜在线91| 91麻豆精品国产91久久久久久| 欧美日韩在线免费视频| 欧美日韩在线免费视频| 欧美伦理电影网| 精品国产乱码久久久久久1区2区| 欧美大片在线观看一区二区| 久久蜜桃香蕉精品一区二区三区| 欧美激情在线观看视频免费| 亚洲视频一区在线观看| 亚洲一线二线三线视频| 日韩高清在线不卡| 麻豆久久久久久久| 国产精品影视网| 91日韩精品一区| 91精品国产免费| 国产区在线观看成人精品| 最新国产の精品合集bt伙计| 首页国产欧美久久| 国产成人小视频| 欧美日韩另类国产亚洲欧美一级| 欧美成人video| 最新国产精品久久精品| 亚洲成人av电影在线| 国产一区二区看久久| 91麻豆福利精品推荐| 欧美一级艳片视频免费观看| 中文字幕免费一区| 日韩精品五月天| 粉嫩aⅴ一区二区三区四区| 欧美日韩在线亚洲一区蜜芽| 久久久蜜桃精品| 亚洲成人在线观看视频| 成人激情视频网站| 欧美一区二区在线观看| 中文字幕亚洲在| 国产一区二区三区在线观看免费视频 | 午夜视频在线观看一区二区| 狠狠色丁香九九婷婷综合五月| 91蜜桃网址入口| 久久中文字幕电影| 午夜影视日本亚洲欧洲精品| 国产99久久久久久免费看农村| 欧美剧情电影在线观看完整版免费励志电影 | 午夜精品免费在线| av一区二区三区黑人| 精品电影一区二区三区| 亚洲一二三区在线观看| 成人av网在线| 欧美激情中文字幕一区二区| 蜜臀91精品一区二区三区| 欧美系列一区二区| 亚洲美女免费视频| 成人免费福利片| 久久久久久9999| 久久成人av少妇免费| 91精品国产aⅴ一区二区| 亚洲国产欧美另类丝袜| 色菇凉天天综合网| 亚洲黄色在线视频| 95精品视频在线| 亚洲欧美一区二区久久| 99热在这里有精品免费| 国产精品青草久久| 成人av在线影院| 专区另类欧美日韩| av资源站一区| 亚洲精品国产一区二区精华液| 成人白浆超碰人人人人| 国产精品高潮呻吟| 色一情一伦一子一伦一区| 综合亚洲深深色噜噜狠狠网站| 成人av在线播放网址| 亚洲欧美日韩综合aⅴ视频| 91麻豆精东视频| 午夜激情一区二区三区| 日韩一区二区在线观看| 九九九久久久精品| 久久精品亚洲一区二区三区浴池| 黑人巨大精品欧美黑白配亚洲| 久久久影视传媒| jlzzjlzz欧美大全| 亚洲国产成人av网| 精品剧情v国产在线观看在线| 久久精品久久99精品久久| 久久一夜天堂av一区二区三区| 国产精品白丝jk白祙喷水网站| xf在线a精品一区二区视频网站| 国产99久久精品| 伊人性伊人情综合网| 欧美高清你懂得| 国产成人亚洲综合a∨猫咪| 亚洲视频一二三| 制服丝袜av成人在线看| 国产在线播放一区| 一区二区高清免费观看影视大全 | 蜜桃av噜噜一区| 国产精品天天摸av网| 欧美日韩色综合| 成人丝袜18视频在线观看| 亚洲一区二区在线免费观看视频| 欧美mv日韩mv亚洲| 91视频国产资源| 经典三级视频一区| 亚洲图片欧美一区| 久久久久久久久久久久久女国产乱| 99国产精品久久| 精品一区二区三区在线播放 | 亚洲免费在线看| 精品捆绑美女sm三区| 91丝袜高跟美女视频| 国内精品自线一区二区三区视频| 亚洲视频综合在线| 精品成a人在线观看| 欧美色综合久久| 国产91富婆露脸刺激对白| 午夜欧美在线一二页| 国产精品每日更新在线播放网址| 日韩一区二区免费高清| 91视频国产观看| 粉嫩av一区二区三区在线播放| 伦理电影国产精品| 亚洲午夜一区二区三区| 最新中文字幕一区二区三区| 久久久久国产一区二区三区四区| 欧美日韩欧美一区二区| 色综合久久88色综合天天6| 国产伦精品一区二区三区视频青涩| 亚洲成人免费影院| 亚洲人成7777| 亚洲男人电影天堂| 国产精品国产三级国产| 久久久久国产成人精品亚洲午夜| 欧美高清www午色夜在线视频| 色综合天天做天天爱| av中文一区二区三区| 国产大片一区二区| 国产精品一区二区黑丝| 国模一区二区三区白浆| 久久99久久99精品免视看婷婷| 亚洲成av人片| 午夜激情一区二区三区| 午夜精品久久一牛影视| 日韩电影在线免费观看| 午夜精品国产更新| 丝袜美腿亚洲一区| 日本不卡视频在线观看| 九九视频精品免费| 国产精品 日产精品 欧美精品| 激情五月激情综合网| 国产乱人伦偷精品视频免下载| 国产一区91精品张津瑜| 国产成人免费网站| av在线不卡网| 在线视频一区二区三区| 欧美肥妇毛茸茸| 日韩美女天天操| 欧美韩国日本不卡| 亚洲日本青草视频在线怡红院| 亚洲天堂免费在线观看视频| 亚洲一级在线观看| 看电视剧不卡顿的网站| 国产精品一区二区在线观看不卡 | 欧美一区二区视频在线观看2020| 日韩一区二区麻豆国产| 久久男人中文字幕资源站| 欧美国产禁国产网站cc| 一区二区三区四区激情| 免费观看30秒视频久久| 成人激情视频网站| 777午夜精品免费视频| 久久精品欧美一区二区三区麻豆| 中文字幕亚洲成人| 日韩高清不卡一区| 成人黄色在线网站| 欧美一二区视频| 18涩涩午夜精品.www| 日韩电影一区二区三区四区| 国产福利一区在线观看| 欧美日韩综合在线| 国产情人综合久久777777| 五月天中文字幕一区二区| 国产电影精品久久禁18| 欧美乱妇20p| 国产精品久久久久久久久图文区 | 亚洲一二三级电影| 国产麻豆日韩欧美久久| 在线视频综合导航| 欧美国产日韩一二三区| 男女男精品视频网| av日韩在线网站| 久久噜噜亚洲综合| 石原莉奈在线亚洲三区| 91欧美一区二区| 国产午夜精品一区二区三区嫩草| 婷婷中文字幕一区三区|