日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ffmpeg内存模型及AVPacket和AVFrame API基本使用

發布時間:2024/4/11 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ffmpeg内存模型及AVPacket和AVFrame API基本使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ffmpeg內存模型及AVPacket和AVFrame API解釋


目錄

  • ffmpeg內存模型
  • AVPacket常用API
  • AVPacket Demo
  • AVFrame常用API

  • 1. ffmpeg內存模型

    /*** Supply raw packet data as input to a decoder.** Internally, this call will copy relevant AVCodecContext fields, which can* influence decoding per-packet, and apply them when the packet is actually* decoded. (For example AVCodecContext.skip_frame, which might direct the* decoder to drop the frame contained by the packet sent with this function.)** @warning The input buffer, avpkt->data must be AV_INPUT_BUFFER_PADDING_SIZE* larger than the actual read bytes because some optimized bitstream* readers read 32 or 64 bits at once and could read over the end.** @warning Do not mix this API with the legacy API (like avcodec_decode_video2())* on the same AVCodecContext. It will return unexpected results now* or in future libavcodec versions.** @note The AVCodecContext MUST have been opened with @ref avcodec_open2()* before packets may be fed to the decoder.** @param avctx codec context* @param[in] avpkt The input AVPacket. Usually, this will be a single video* frame, or several complete audio frames.* Ownership of the packet remains with the caller, and the* decoder will not write to the packet. The decoder may create* a reference to the packet data (or copy it if the packet is* not reference-counted).* Unlike with older APIs, the packet is always fully consumed,* and if it contains multiple frames (e.g. some audio codecs),* will require you to call avcodec_receive_frame() multiple* times afterwards before you can send a new packet.* It can be NULL (or an AVPacket with data set to NULL and* size set to 0); in this case, it is considered a flush* packet, which signals the end of the stream. Sending the* first flush packet will return success. Subsequent ones are* unnecessary and will return AVERROR_EOF. If the decoder* still has frames buffered, it will return them after sending* a flush packet.** @return 0 on success, otherwise negative error code:* AVERROR(EAGAIN): input is not accepted in the current state - user* must read output with avcodec_receive_frame() (once* all output is read, the packet should be resent, and* the call will not fail with EAGAIN).* AVERROR_EOF: the decoder has been flushed, and no new packets can* be sent to it (also returned if more than 1 flush* packet is sent)* AVERROR(EINVAL): codec not opened, it is an encoder, or requires flush* AVERROR(ENOMEM): failed to add packet to internal queue, or similar* other errors: legitimate decoding errors*/ int avcodec_send_packet(AVCodecContext *avctx, const AVPacket *avpkt); /*** Return decoded output data from a decoder.** @param avctx codec context* @param frame This will be set to a reference-counted video or audio* frame (depending on the decoder type) allocated by the* decoder. Note that the function will always call* av_frame_unref(frame) before doing anything else.** @return* 0: success, a frame was returned* AVERROR(EAGAIN): output is not available in this state - user must try* to send new input* AVERROR_EOF: the decoder has been fully flushed, and there will be* no more output frames* AVERROR(EINVAL): codec not opened, or it is an encoder* AVERROR_INPUT_CHANGED: current decoded frame has changed parameters* with respect to first decoded frame. Applicable* when flag AV_CODEC_FLAG_DROPCHANGED is set.* other negative values: legitimate decoding errors*/ int avcodec_receive_frame(AVCodecContext *avctx, AVFrame *frame);

    2. 從av_read_frame讀取到一個AVPacket后怎么放入隊列?從avcodec_recevice_frame讀取到一個AVFrame后又怎么放入隊列?

  • 從現有的Packet拷貝一個新Packet的時候,有兩種情況:

  • 兩個Packet的buf引用的是同一數據緩存空間,這時候要注意數據緩存空間的釋放問題;
  • 兩個Packet的buf引用不同的數據緩存空間,每個Packet都有數據緩存空間的copy;
  • AVPacket和AVFrame內部都封裝了AVBufferRef

  • AVBufferRef真正存儲數據的是AVBuffer

  • AVBuffer的data是真正存數據的,refcount是引用計數

  • 更精確一點


  • 對于多個AVPacket共享同一個緩存空間, FFmpeg使用的引用計數的機制(reference-count) :

  • 初始化引用計數為0,只有真正分配AVBuffer的時候,引用計數初始化為1;
  • 當有新的Packet引用共享的緩存空間時, 就將引用計數+1;
  • 當釋放了引用共享空間的Packet,就將引用計數-1;引用計數為0時,就釋放掉引用的緩存空間AVBuffer。
  • AVFrame也是采用同樣的機制。


  • 2. AVPacket常用API

    函數原型說明
    AVPacket *av_packet_alloc(void);分配AVPacket,這個時候和buffer沒有關系
    void av_packet_free(AVPacket **pkt);釋放AVPacket和_alloc對應
    void av_init_packet(AVPacket *pkt);初始化AVPacket,只是單純初始化pkt字段
    int av_new_packet(AVPacket *pkt, int size);給AVPacket的buf分配內存, 引用計數初始化為1
    int av_packet_ref(AVPacket *dst, const AVPacket *src);增加引用計數
    void av_packet_unref(AVPacket *pkt);減少引用計數
    void av_packet_move_ref(AVPacket *dst, AVPacket *src);轉移引用計數
    AVPacket *av_packet_clone(const AVPacket *src);等于av_packet_alloc()+av_packet_ref()

    0. AVPacket結構體

    /*** This structure stores compressed data. It is typically exported by demuxers* and then passed as input to decoders, or received as output from encoders and* then passed to muxers.** For video, it should typically contain one compressed frame. For audio it may* contain several compressed frames. Encoders are allowed to output empty* packets, with no compressed data, containing only side data* (e.g. to update some stream parameters at the end of encoding).** AVPacket is one of the few structs in FFmpeg, whose size is a part of public* ABI. Thus it may be allocated on stack and no new fields can be added to it* without libavcodec and libavformat major bump.** The semantics of data ownership depends on the buf field.* If it is set, the packet data is dynamically allocated and is* valid indefinitely until a call to av_packet_unref() reduces the* reference count to 0.** If the buf field is not set av_packet_ref() would make a copy instead* of increasing the reference count.** The side data is always allocated with av_malloc(), copied by* av_packet_ref() and freed by av_packet_unref().** @see av_packet_ref* @see av_packet_unref*/ typedef struct AVPacket {/*** A reference to the reference-counted buffer where the packet data is* stored.* May be NULL, then the packet data is not reference-counted.*/AVBufferRef *buf;/*** Presentation timestamp in AVStream->time_base units; the time at which* the decompressed packet will be presented to the user.* Can be AV_NOPTS_VALUE if it is not stored in the file.* pts MUST be larger or equal to dts as presentation cannot happen before* decompression, unless one wants to view hex dumps. Some formats misuse* the terms dts and pts/cts to mean something different. Such timestamps* must be converted to true pts/dts before they are stored in AVPacket.*/int64_t pts;/*** Decompression timestamp in AVStream->time_base units; the time at which* the packet is decompressed.* Can be AV_NOPTS_VALUE if it is not stored in the file.*/int64_t dts;uint8_t *data;int size;int stream_index;/*** A combination of AV_PKT_FLAG values*/int flags;/*** Additional packet data that can be provided by the container.* Packet can contain several types of side information.*/AVPacketSideData *side_data;int side_data_elems;/*** Duration of this packet in AVStream->time_base units, 0 if unknown.* Equals next_pts - this_pts in presentation order.*/int64_t duration;int64_t pos; ///< byte position in stream, -1 if unknown#if FF_API_CONVERGENCE_DURATION/*** @deprecated Same as the duration field, but as int64_t. This was required* for Matroska subtitles, whose duration values could overflow when the* duration field was still an int.*/attribute_deprecatedint64_t convergence_duration; #endif } AVPacket;

    1. AVPacket *av_packet_alloc(void);

  • 解釋

  • 簡單的創建一個AVPacket,將其字段設為默認值(data為空,沒有數據緩存空間),data的指針需要另外去賦值。
  • 分配AVPacket,初始化pkt字段,這個時候和buffer沒有關系,內部調用了void av_init_packet(AVPacket *pkt);
  • 源碼

  • AVPacket *av_packet_alloc(void) {AVPacket *pkt = av_mallocz(sizeof(AVPacket));if (!pkt)return pkt;av_init_packet(pkt);return pkt; }

    2. void av_packet_free(AVPacket **pkt);

  • 解釋

  • 釋放AVPacket和_alloc對應。內部調用了void av_packet_unref(AVPacket *pkt);
  • 源碼

  • void av_packet_free(AVPacket **pkt) {if (!pkt || !*pkt)return;av_packet_unref(*pkt);av_freep(pkt); }

    3. void av_init_packet(AVPacket *pkt);

  • 解釋

  • 初始化AVPacket,只是單純初始化pkt字段.
  • 源碼

  • void av_init_packet(AVPacket *pkt) {pkt->pts = AV_NOPTS_VALUE;pkt->dts = AV_NOPTS_VALUE;pkt->pos = -1;pkt->duration = 0; #if FF_API_CONVERGENCE_DURATION FF_DISABLE_DEPRECATION_WARNINGSpkt->convergence_duration = 0; FF_ENABLE_DEPRECATION_WARNINGS #endifpkt->flags = 0;pkt->stream_index = 0;pkt->buf = NULL;pkt->side_data = NULL;pkt->side_data_elems = 0; }

    4. int av_new_packet(AVPacket *pkt, int size);

  • 解釋
  • 給AVPacket的AVBufferRef分配內存, 引用計數初始化為1。內部調用了void av_init_packet(AVPacket *pkt)
  • 源碼
  • int av_new_packet(AVPacket *pkt, int size) {AVBufferRef *buf = NULL;int ret = packet_alloc(&buf, size);if (ret < 0)return ret;av_init_packet(pkt);pkt->buf = buf;pkt->data = buf->data;pkt->size = size;return 0; }

    5. int av_packet_ref(AVPacket *dst, const AVPacket *src);

  • 解釋
  • 使用引用計數的淺拷貝
  • 該函數會先拷貝所有非緩存類數據,然后創建一個src->buf的新的引用計數。如果src已經設置了引用計數發(src->buf不為空),則直接將其引用計數+1;
    如果src沒有設置引用計數(src->buf為空),則為dst創建一個新的引用計數buf,并復制src->data到dst->buf->data和dst-data中。
  • 最后,復制src的其他字段到dst中。所以av_packet_ref()是將2個AVPacket共用一個緩存的。
  • 源碼
  • int av_packet_ref(AVPacket *dst, const AVPacket *src) {int ret;dst->buf = NULL;ret = av_packet_copy_props(dst, src);if (ret < 0)goto fail;if (!src->buf) {ret = packet_alloc(&dst->buf, src->size);if (ret < 0)goto fail;av_assert1(!src->size || src->data);if (src->size)memcpy(dst->buf->data, src->data, src->size);dst->data = dst->buf->data;} else {dst->buf = av_buffer_ref(src->buf);if (!dst->buf) {ret = AVERROR(ENOMEM);goto fail;}dst->data = src->data;}dst->size = src->size;return 0; fail:av_packet_unref(dst);return ret; }

    6. void av_packet_unref(AVPacket *pkt);

  • 解釋
  • 使用引用計數清理數據
  • 將緩存空間的引用計數-1,并將Packet中的其他字段設為初始值。如果引用計數為0,自動的釋放緩存空間。
  • 源碼
  • void av_packet_unref(AVPacket *pkt) {av_packet_free_side_data(pkt);av_buffer_unref(&pkt->buf);av_init_packet(pkt);pkt->data = NULL;pkt->size = 0; }

    7. void av_packet_move_ref(AVPacket *dst, AVPacket *src);

  • 解釋:
  • 轉移引用計數
  • 把src整個結構體直接賦值給dst,所以引用計數沒有發生變化,并且src被av_init_packet重置
  • 源碼
  • void av_packet_move_ref(AVPacket *dst, AVPacket *src) {*dst = *src;av_init_packet(src);src->data = NULL;src->size = 0; }

    8. AVPacket *av_packet_clone(const AVPacket *src);

  • 解釋
  • 先創建一個新的AVPacket,然后再進行計數引用+數據拷貝,使得新的AVPacket指向老的AVPacket同一個data。
  • 等于av_packet_alloc()+av_packet_ref()
  • 源碼
  • AVPacket *av_packet_clone(const AVPacket *src) {AVPacket *ret = av_packet_alloc();if (!ret)return ret;if (av_packet_ref(ret, src))av_packet_free(&ret);return ret; }

    3. AVPacket Demo

    #define MEM_ITEM_SIZE (20*1024*102) #define AVPACKET_LOOP_COUNT 1000 // 測試 內存泄漏 /*** @brief 測試av_packet_alloc和av_packet_free的配對使用*/ void av_packet_test1() {AVPacket *pkt = NULL;int ret = 0;pkt = av_packet_alloc();ret = av_new_packet(pkt, MEM_ITEM_SIZE); // 引用計數初始化為1memccpy(pkt->data, (void *) &av_packet_test1, 1, MEM_ITEM_SIZE);av_packet_unref(pkt); // 要不要調用av_packet_free(&pkt); // 如果不free將會發生內存泄漏,內部調用了 av_packet_unref }/*** @brief 測試誤用av_init_packet將會導致內存泄漏*/ void av_packet_test2() {AVPacket *pkt = NULL;int ret = 0;pkt = av_packet_alloc();ret = av_new_packet(pkt, MEM_ITEM_SIZE);memccpy(pkt->data, (void *) &av_packet_test1, 1, MEM_ITEM_SIZE); // av_init_packet(pkt); // 這個時候init就會導致內存無法釋放av_packet_free(&pkt); }/*** @brief 測試av_packet_move_ref后,可以av_init_packet*/ void av_packet_test3() {AVPacket *pkt = NULL;AVPacket *pkt2 = NULL;int ret = 0;pkt = av_packet_alloc();ret = av_new_packet(pkt, MEM_ITEM_SIZE);memccpy(pkt->data, (void *) &av_packet_test1, 1, MEM_ITEM_SIZE);pkt2 = av_packet_alloc(); // 必須先allocav_packet_move_ref(pkt2, pkt);//內部其實也調用了av_init_packetav_init_packet(pkt);av_packet_free(&pkt);av_packet_free(&pkt2); }/*** @brief 測試av_packet_clone*/ void av_packet_test4() {AVPacket *pkt = NULL;// av_packet_alloc()沒有必要,因為av_packet_clone內部有調用 av_packet_allocAVPacket *pkt2 = NULL;int ret = 0;pkt = av_packet_alloc();ret = av_new_packet(pkt, MEM_ITEM_SIZE);memccpy(pkt->data, (void *) &av_packet_test1, 1, MEM_ITEM_SIZE);pkt2 = av_packet_clone(pkt); // av_packet_alloc()+av_packet_ref()av_init_packet(pkt);av_packet_free(&pkt);av_packet_free(&pkt2); }/*** @brief 測試av_packet_ref*/ void av_packet_test5() {AVPacket *pkt = NULL;AVPacket *pkt2 = NULL;int ret = 0;pkt = av_packet_alloc(); //if (pkt->buf) // 打印referenc-counted,必須保證傳入的是有效指針{printf("%s(%d) ref_count(pkt) = %d\n", __FUNCTION__, __LINE__,av_buffer_get_ref_count(pkt->buf));}ret = av_new_packet(pkt, MEM_ITEM_SIZE);if (pkt->buf) // 打印referenc-counted,必須保證傳入的是有效指針{printf("%s(%d) ref_count(pkt) = %d\n", __FUNCTION__, __LINE__,av_buffer_get_ref_count(pkt->buf));}memccpy(pkt->data, (void *) &av_packet_test1, 1, MEM_ITEM_SIZE);pkt2 = av_packet_alloc(); // 必須先allocav_packet_move_ref(pkt2, pkt); // av_packet_move_ref // av_init_packet(pkt); //av_packet_move_refav_packet_ref(pkt, pkt2);av_packet_ref(pkt, pkt2); // 多次ref如果沒有對應多次unref將會內存泄漏if (pkt->buf) // 打印referenc-counted,必須保證傳入的是有效指針{printf("%s(%d) ref_count(pkt) = %d\n", __FUNCTION__, __LINE__,av_buffer_get_ref_count(pkt->buf));}if (pkt2->buf) // 打印referenc-counted,必須保證傳入的是有效指針{printf("%s(%d) ref_count(pkt) = %d\n", __FUNCTION__, __LINE__,av_buffer_get_ref_count(pkt2->buf));}av_packet_unref(pkt); // 將為2av_packet_unref(pkt); // 做第二次是沒有用的if (pkt->buf)printf("pkt->buf沒有被置NULL\n");elseprintf("pkt->buf已經被置NULL\n");if (pkt2->buf) // 打印referenc-counted,必須保證傳入的是有效指針{printf("%s(%d) ref_count(pkt) = %d\n", __FUNCTION__, __LINE__,av_buffer_get_ref_count(pkt2->buf));}av_packet_unref(pkt2);av_packet_free(&pkt);av_packet_free(&pkt2); }/*** @brief 測試AVPacket整個結構體賦值, 和av_packet_move_ref類似*/ void av_packet_test6() {AVPacket *pkt = NULL;AVPacket *pkt2 = NULL;int ret = 0;pkt = av_packet_alloc();ret = av_new_packet(pkt, MEM_ITEM_SIZE);memccpy(pkt->data, (void *) &av_packet_test1, 1, MEM_ITEM_SIZE);pkt2 = av_packet_alloc(); // 必須先alloc*pkt2 = *pkt; // 有點類似 pkt可以重新分配內存av_init_packet(pkt);av_packet_free(&pkt);av_packet_free(&pkt2); }

    3. AVFrame常用API

    函數原型說明
    AVFrame *av_frame_alloc(void);分配AVFrame
    void av_frame_free(AVFrame **frame);釋放AVFrame
    int av_frame_ref(AVFrame *dst, const AVFrame *src);增加引用計數
    void av_frame_unref(AVFrame *frame);減少引用計數
    void av_frame_move_ref(AVFrame *dst, AVFrame *src);轉移引用計數
    int av_frame_get_buffer(AVFrame *frame, int align);根據AVFrame分配內存
    AVFrame *av_frame_clone(const AVFrame *src);等于av_frame_alloc()+av_frame_ref()
  • 解釋同上
  • 超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

    總結

    以上是生活随笔為你收集整理的ffmpeg内存模型及AVPacket和AVFrame API基本使用的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    国产精品久久99综合免费观看尤物 | 国产精品久久久久av免费 | 欧美 国产 视频 | 五月天婷婷视频 | www.玖玖玖 | 成人黄色中文字幕 | av大片网站 | 国产在线观看午夜 | a级国产乱理论片在线观看 特级毛片在线观看 | 在线观看涩涩 | 色精品视频| 丁香婷婷在线观看 | 亚洲视频观看 | 中文国产在线观看 | 天天摸天天舔天天操 | 狠狠色丁香久久综合网 | 一区二区三区四区五区在线视频 | 久久99国产精品免费网站 | 国产日韩欧美精品在线观看 | 中文字幕在线观看免费观看 | 中文字幕视频在线播放 | 成人毛片一区 | 午夜精品一区二区三区在线 | 日批在线观看 | 成人免费观看电影 | 精品99在线视频 | 国产美女永久免费 | 久久99在线视频 | 亚洲 欧洲av| 97视频在线播放 | 天天躁日日躁狠狠躁av中文 | 久久精品亚洲综合专区 | 四虎在线观看视频 | 最近能播放的中文字幕 | 摸阴视频 | 国产首页| 男女全黄一级一级高潮免费看 | 探花系列在线 | 97在线精品 | 日韩深夜在线观看 | 国产精品99久久久精品免费观看 | 国产一级免费片 | 国产一区二区高清视频 | 国产亚洲久一区二区 | 中文字幕有码在线 | 国产麻豆精品久久 | 高清不卡一区二区在线 | 国产在线a不卡 | 亚洲一区二区三区在线看 | 欧美日韩免费在线观看视频 | 美女视频黄在线观看 | 中文字幕欧美激情 | 97超碰免费在线观看 | 91成人免费 | 日韩免费高清在线观看 | 欧洲成人免费 | 91看片黄色| av解说在线 | 久久久久久久久久久久影院 | 久久久久国产精品厨房 | 国产 日韩 欧美 自拍 | 欧美色综合久久 | 久久久久亚洲精品男人的天堂 | 丁香六月中文字幕 | 国产精品 日韩精品 | 园产精品久久久久久久7电影 | 亚洲一级二级三级 | 在线观看麻豆av | 久久99国产精品二区护士 | 国产精品久久久久av福利动漫 | 日韩免费视频观看 | 五月婷婷丁香综合 | 精品国产一区二区三区四区在线观看 | 亚洲黑丝少妇 | 成人午夜免费剧场 | 8x成人免费视频 | 日韩免费二区 | 国内精品久久久久久久久久久 | 在线观看久久久久久 | 久久激情视频网 | 亚洲精品午夜aaa久久久 | 337p日本欧洲亚洲大胆裸体艺术 | av品善网 | 久久久噜噜噜久久久 | 免费看精品久久片 | 在线导航av | 天天曰天天曰 | 日韩乱理 | 日本精油按摩3 | 叶爱av在线| 亚洲永久精品视频 | 免费视频在线观看网站 | 国产91aaa| 91完整版在线观看 | 国产精品短视频 | av中文字幕在线观看网站 | www.亚洲精品视频 | 国产精品毛片一区二区在线看 | 久久久影院官网 | 色中文字幕在线观看 | 久久精品国产亚洲a | 日日天天av| 狠狠的干狠狠的操 | www.大网伊人| 国产精品久久久久久久久久久不卡 | 在线视频一区观看 | 精品欧美一区二区三区久久久 | 国产999视频在线观看 | 精品国产一区二区三区不卡 | 国产免费亚洲高清 | 亚洲激情 在线 | 日韩精品免费一线在线观看 | 91精品中文字幕 | av线上免费观看 | 黄色毛片在线 | 综合久久婷婷 | 亚洲精品国偷拍自产在线观看蜜桃 | 在线播放 日韩专区 | 日韩欧美视频二区 | 国产精品99蜜臀久久不卡二区 | 一区 在线 影院 | 欧美国产亚洲精品久久久8v | 日韩电影精品一区 | 天天射天天射 | 黄色大片网| 免费看国产一级片 | 8x成人在线 | 一本到在线 | 亚洲黄色在线免费观看 | 不卡的av中文字幕 | 99热九九这里只有精品10 | 日本爱爱片 | 国产日韩精品一区二区三区在线 | 久久精品国产久精国产 | 欧美在线观看视频免费 | 国产乱码精品一区二区蜜臀 | 97超碰人人澡人人爱 | 亚洲欧洲一区二区在线观看 | 久久福利影视 | 国产精品久久久久久久久久 | 久久精品99国产精品 | 亚洲综合爱 | 最新亚洲视频 | 欧美一区二区三区在线视频观看 | www.com黄| 日韩av中文在线 | 综合久久久久久久 | 日韩中文字幕a | 涩涩网站在线看 | av怡红院 | 韩国精品在线观看 | 久久99精品波多结衣一区 | 狠狠操精品 | 成人va视频 | 亚洲波多野结衣 | 久久99视频| 中文字幕精品视频 | 日日夜夜综合 | 天天操狠狠操夜夜操 | 亚洲涩涩网站 | 在线国产黄色 | 亚洲一级片av | 国产精品久久久视频 | 人人舔人人舔 | 高清在线观看av | 天天射综合网站 | 在线免费观看黄色小说 | 婷婷激情5月天 | 免费亚洲一区二区 | 日韩av电影网站在线观看 | 久久精品视频免费观看 | 久久久美女| 亚洲午夜精品一区二区三区电影院 | 天天色天天射综合网 | 中文字幕欧美日韩va免费视频 | 国产精品99久久免费观看 | 亚洲精品国产免费 | 久久免费看 | 久久草在线免费 | 夜添久久精品亚洲国产精品 | 精品国产伦一区二区三区免费 | 国产亚洲在 | 婷婷成人亚洲综合国产xv88 | 五月婷婷久久丁香 | 国产在线精 | 亚洲国产69 | 99人久久精品视频最新地址 | 精品一区二区三区在线播放 | 中文字幕第一页在线视频 | 国产精品av一区二区 | 成人性生交大片免费观看网站 | 久久久国产精品亚洲一区 | 国产96在线观看 | 四虎视频 | 久久婷婷久久 | 国产资源在线免费观看 | av在线观 | 午夜天使 | 亚洲精品乱码久久久久久蜜桃欧美 | 天天综合成人网 | 99久久久国产精品免费99 | 丁香婷婷激情啪啪 | 在线观看av麻豆 | 免费a视频在线 | 国产v在线 | 久久美女视频 | 欧美片一区二区三区 | 日韩精品一卡 | 国产一区二区三区 在线 | 国产中文自拍 | 国产一级片久久 | 欧美人zozo | 亚洲视频资源在线 | 日韩精品字幕 | 国产精品久久久久一区二区三区共 | 国产日本在线观看 | 久久久久9999亚洲精品 | 黄色毛片视频免费观看中文 | 免费a v在线 | 亚洲欧美日韩国产一区二区 | 亚州激情视频 | 国产精品手机播放 | 91资源在线视频 | 欧美日韩一区二区三区不卡 | 国产伦精品一区二区三区四区视频 | 粉嫩av一区二区三区四区在线观看 | 麻豆传媒视频在线免费观看 | 一区二区国产精品 | wwwww.国产 | 五月婷婷综合在线视频 | 午夜黄色 | 国产综合片 | 国产在线观看h | 九九久久久久久久久激情 | 91精品人成在线观看 | 国产一区精品在线观看 | 色噜噜狠狠狠狠色综合 | 最新日本中文字幕 | 91视频3p| 91av视频观看 | www.色综合.com | 亚洲精品资源在线 | 亚洲国产精品成人av | 深爱婷婷久久综合 | 在线视频观看你懂的 | 亚洲精品三级 | 中文字幕不卡在线88 | 一级a毛片高清视频 | 日韩欧美有码在线 | 亚洲精品视频免费看 | 精品免费观看 | 国色综合 | 在线成人国产 | 99色人 | 久久成人在线 | 久久精品视频18 | 在线观看免费黄视频 | 黄色毛片视频免费 | 操操操干干干 | www.色婷婷.com | 四虎8848免费高清在线观看 | 国产免费人成xvideos视频 | 丝袜美腿在线播放 | 我要看黄色一级片 | 国产尤物视频在线 | 69欧美视频 | 亚洲精品色视频 | 国产精品第二十页 | 国产91九色蝌蚪 | 精品日韩中文字幕 | 天天做日日做天天爽视频免费 | 午夜影视一区 | 九九久 | 欧美在线a视频 | 国产又粗又硬又爽的视频 | 一区二区三区在线观看免费 | 手机在线黄色网址 | 亚洲爱爱视频 | 亚洲激情网站免费观看 | 91av视频导航 | 国产粉嫩在线 | 婷婷av网站 | 国产精品黄色 | 91 在线视频 | 日本精品一区二区 | 狠狠色丁香久久婷婷综合丁香 | 69国产精品视频免费观看 | 国产三级久久久 | www成人精品 | 国产精品免费久久久久影院仙踪林 | 中文字幕欧美三区 | 日韩精品一区二区在线 | 久久国产欧美日韩 | 国产精品99久久久精品 | 欧美日本不卡视频 | 亚洲精品国偷自产在线91正片 | 中文字幕在线观看视频一区 | 欧美成人手机版 | 夜夜夜影院 | 97超碰免费在线观看 | 中文字幕第一页在线 | 亚洲精品中文在线 | 麻豆视频在线看 | 五月天天色 | 久久成人综合视频 | 日韩综合视频在线观看 | 欧美xxxx性xxxxx高清 | 一区二区三区四区五区在线 | 精品国产伦一区二区三区观看说明 | 午夜视频黄 | 国产精品美女久久久久久久网站 | 欧美淫aaa免费观看 日韩激情免费视频 | 99久久婷婷国产一区二区三区 | 色资源网免费观看视频 | 国产a网站 | 精品一区二区在线观看 | 国产精品综合在线观看 | 久久精品99久久久久久2456 | 日韩av影片在线观看 | 婷婷丁香花五月天 | 久久视频在线观看 | 丁香六月网 | 国产精品亚 | 欧美久久久久久久久中文字幕 | 日韩影片在线观看 | 久草免费看| 国产一级在线免费观看 | 福利视频午夜 | 色亚洲网| 亚洲精品一区中文字幕乱码 | 亚洲综合网站在线观看 | 免费看污黄网站 | 91精品在线免费 | 久久精品国产免费看久久精品 | 国产高清免费在线观看 | 深爱婷婷久久综合 | 黄网站a| 久久五月婷婷综合 | 国产精品九九九 | 国产视频不卡 | 国产精品国产亚洲精品看不卡15 | 在线激情网 | av7777777| 人人舔人人干 | 日韩av二区 | 九九色在线观看 | 久久综合久久综合这里只有精品 | 久久久久久不卡 | 区一区二区三在线观看 | 一区二区理论片 | 天天综合网天天综合色 | 国内成人综合 | 免费福利在线 | 日韩精品极品视频 | 免费在线观看av网站 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 色婷婷狠狠 | 国产麻豆电影在线观看 | 欧美性黑人| 欧美成人播放 | 日日干美女 | 精品国产亚洲一区二区麻豆 | 韩日精品在线观看 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 伊人丁香| 精品99免费 | 亚洲精品午夜国产va久久成人 | 国产成人久久av免费高清密臂 | 天堂va欧美va亚洲va老司机 | 99热手机在线观看 | 午夜影院一级片 | 国产成人香蕉 | 久香蕉 | 亚洲三级在线播放 | 97超碰精品| 欧美久久久一区二区三区 | 午夜精品一区二区国产 | 亚洲精品国产精品国自产观看 | 亚洲五月综合 | 九九精品久久久 | 色天天中文 | 伊人伊成久久人综合网小说 | 久久国产经典视频 | 蜜臀久久99精品久久久久久网站 | 婷婷中文字幕在线观看 | 亚洲精品视频网址 | 四虎影视成人永久免费观看视频 | 色视频网站免费观看 | 精品一区二区免费视频 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 日本三级香港三级人妇99 | 色多多视频在线观看 | 黄色一二级片 | 精品国产伦一区二区三区免费 | 欧美另类性 | 亚洲精品在线电影 | 狠狠操操操 | 国产一级二级视频 | 亚洲黄色在线播放 | 久久综合久久综合这里只有精品 | 91激情视频在线 | 亚洲伊人色 | 最新国产精品亚洲 | 免费日韩av片 | 97电影在线观看 | 婷婷六月综合亚洲 | 激情六月婷婷久久 | 99久久精品电影 | 免费av片在线 | 日韩黄色免费看 | 69视频在线 | 国产麻豆传媒 | 丁香网婷婷 | 一区中文字幕 | 久久精品xxx | 美女在线黄 | www.日本色 | 99久久这里有精品 | 亚洲国产三级 | 999热线在线观看 | 91av视频观看| 日本精品视频一区 | 日韩欧美在线观看一区二区 | 伊人国产女| 久久五月情影视 | 欧美a级在线免费观看 | 性日韩欧美在线视频 | 午夜精品99久久免费 | 国产精品久久久久久久久久99 | 视频一区二区免费 | 精品久久国产一区 | 中文字幕日本特黄aa毛片 | 久久官网 | 91麻豆精品国产91 | 日产乱码一二三区别免费 | 精品国产精品久久一区免费式 | 在线观看国产高清视频 | 亚洲精品美女在线观看播放 | 久久精品影片 | 黄视频网站大全 | 亚洲欧洲精品在线 | 日韩国产欧美在线播放 | 伊人开心激情 | 成人 亚洲 欧美 | 日本在线视频网址 | 九七在线视频 | 九九国产精品视频 | 久久艹久久| 中文字幕色在线 | 香蕉在线视频观看 | 国产视频综合在线 | 欧美在线视频一区二区三区 | 日韩在线三级 | 免费久久久久久久 | 免费成人黄色片 | 日韩成人免费在线 | 黄色成年片 | 最近日本mv字幕免费观看 | 国产中文字幕一区 | 国产精品网站 | 国产亚洲激情视频在线 | 欧美另类一二三四区 | 午夜精品一区二区三区在线观看 | 人人插超碰 | 久一网站| 国产 字幕 制服 中文 在线 | 国产一区在线观看视频 | 亚洲影视资源 | 99久久精品国产亚洲 | 欧美性生爱 | 伊人久久五月天 | 亚洲h在线播放在线观看h | 国产精品久久久久久久久久妇女 | 青青河边草观看完整版高清 | 激情久久综合 | 在线观看一级视频 | 亚洲精品高清视频在线观看 | 九九视频网站 | 欧美另类老妇 | 日韩免费高清 | 日韩精品视频免费看 | 国产精品久久久久久久免费大片 | 亚洲视频2 | 国产精品大尺度 | 国产在线精品一区二区不卡了 | 国产精品都在这里 | 一区二区三区中文字幕在线观看 | 日韩精品一区二区三区中文字幕 | 久久人人爽人人爽人人 | 欧美成人亚洲 | 免费日韩 精品中文字幕视频在线 | 久久亚洲免费视频 | 国产伦理久久精品久久久久_ | 久久精品网站视频 | 丁香国产视频 | 综合婷婷丁香 | 亚洲精品玖玖玖av在线看 | 亚洲欧美日韩精品久久奇米一区 | 天堂av高清| 美女一级毛片视频 | 麻豆成人精品视频 | 亚洲黄色app | 91福利视频在线 | 免费观看全黄做爰大片国产 | 亚洲人成人天堂h久久 | 亚洲第一av在线播放 | 一区二区三区电影大全 | 亚洲最大成人免费网站 | 高清av免费看 | 日韩免费播放 | 色com| 日韩啪视频 | 日韩在线视频不卡 | 在线亚洲观看 | www.com黄色| 亚洲在线黄色 | 天天做日日做天天爽视频免费 | 97麻豆视频 | 97精品国产一二三产区 | 久久精品国产一区二区 | 久久亚洲欧美日韩精品专区 | 国产精品久久久99 | 国产精品成人自拍 | 天天操天天操天天操天天操 | 久久网站最新地址 | 亚洲六月丁香色婷婷综合久久 | 2019av在线视频| 国产精国产精品 | 国产一区二区久久精品 | 一区二区电影在线观看 | 欧美激情综合五月 | 天天操天天能 | 婷婷色网站 | 久草在线免 | 久久免费观看少妇a级毛片 久久久久成人免费 | 日韩综合在线观看 | 日本中文字幕在线看 | 91最新在线 | 麻豆成人小视频 | 中文字幕在线观看国产 | 国产探花 | 亚洲精品视频网站在线观看 | 中文字幕第一页在线 | 黄色网址中文字幕 | 欧美日韩国产精品一区二区三区 | 国产在线视频一区二区三区 | 国产精品久久一 | 狠狠网亚洲精品 | 香蕉成人在线视频 | 69xxxx欧美| 天天操天天干天天爱 | 亚洲精品久久久久久国 | 欧美性另类 | 伊人春色电影网 | 久久激情视频 久久 | av免费在线看网站 | 亚洲美女精品区人人人人 | av大全在线免费观看 | 欧美日韩国产精品一区 | 亚州精品成人 | 国语黄色片 | 在线观看免费版高清版 | 69国产精品成人在线播放 | h网站免费在线观看 | 成人在线免费视频 | 激情欧美一区二区三区免费看 | 久草在线综合 | 中文字幕在线观看资源 | 国产亚洲视频在线免费观看 | 狠狠色丁香久久婷婷综合_中 | 99久久精品免费看国产 | 亚洲一区二区三区四区精品 | 色香网 | 精品在线99 | 999久久国产精品免费观看网站 | 日韩中文字幕视频在线观看 | 欧美性久久久 | 97超碰超碰 | 公与妇乱理三级xxx 在线观看视频在线观看 | 国产日韩欧美中文 | 日本女人在线观看 | 成人免费观看完整版电影 | 久草网站在线观看 | 日韩免费一区二区 | 999超碰 | 日本久久精品视频 | 丰满少妇对白在线偷拍 | 久久国产精品免费看 | 亚洲最新视频在线 | 激情综合五月婷婷 | 久久综合精品国产一区二区三区 | 人人澡av | 成人精品久久 | 天天干天天上 | 久久综合射| 亚洲六月丁香色婷婷综合久久 | 欧美国产日韩一区二区三区 | 久久好看免费视频 | 欧洲一区精品 | 六月丁香激情综合色啪小说 | 久久免费福利视频 | 美女av免费 | 九九视频免费 | 欧美日本一二三 | 国产精品一级在线 | 免费看片在线观看 | 黄色毛片视频免费 | 在线观看黄网站 | www.黄色网.com | 国产在线传媒 | 中文字幕av在线播放 | 99精品久久久久久久 | 国产在线播放观看 | 国产又粗又猛又爽又黄的视频先 | 麻豆一二 | 天天色天天色天天色 | 免费看黄网站在线 | 国产黄色片一级三级 | 久久有精品 | 西西444www大胆无视频 | 蜜臀久久99静品久久久久久 | 九九免费在线观看 | 日本中文不卡 | 色综合久久天天 | 久久夜夜夜 | 探花视频在线观看+在线播放 | 久久精品视频国产 | 亚洲精品va | 国产免费久久精品 | 粉嫩av一区二区三区四区五区 | 欧美亚洲国产一卡 | 精品国产乱码久久久久久久 | 久久成年人视频 | 久久999精品 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 九九免费精品视频 | 日日天天干 | 国产精品video爽爽爽爽 | 欧美国产日韩在线观看 | 中文字幕观看在线 | 国产成人在线免费观看 | 久久免费一 | 国产在线一区观看 | 国产精品日韩欧美一区二区 | 四虎国产永久在线精品 | 精品国产a | 久久久久久久久久久久亚洲 | 亚洲欧美视屏 | 91秒拍国产福利一区 | 成人精品一区二区三区电影免费 | 一区二区三区韩国免费中文网站 | 天天色成人网 | 欧美日韩视频在线观看一区二区 | 成人一级片在线观看 | 亚洲精品午夜久久久久久久久久久 | 国产免费片| 欧美色黄| 久久人人精 | 久久久久99精品国产片 | 69国产精品成人在线播放 | 人成在线免费视频 | 日日夜夜天天 | 97超碰在线免费 | 国产精久久久 | 久久国产欧美日韩 | 98超碰在线观看 | 国产在线精品国自产拍影院 | 少妇bbbb| 久久久国产精品一区二区三区 | 97国产小视频 | 国产手机视频在线观看 | 日日夜夜狠狠干 | 探花视频在线观看 | 久久综合九色综合欧美就去吻 | 免费观看十分钟 | 亚洲一级片免费观看 | 人人干网 | 亚洲综合欧美激情 | 免费a网站 | 亚州精品在线视频 | 蜜臀av夜夜澡人人爽人人 | 欧美日韩视频免费看 | 一区二区三区日韩在线观看 | 在线黄色免费av | 国产高清网站 | 国产三级午夜理伦三级 | 狠狠伊人 | 97超视频 | 国产一区二区综合 | 狠狠狠狠狠狠操 | 久香蕉 | av不卡免费在线观看 | 久草视频精品 | av免费在线免费观看 | 中文字幕免费成人 | 久久99欧美 | 亚洲一区日韩 | 美女在线免费观看视频 | 91在线视频一区 | 日本成人中文字幕在线观看 | 久久不卡av | 午夜精品久久 | 91成人在线观看高潮 | 久久精品一区二区国产 | 91最新在线观看 | 久久综合婷婷 | 黄色av免费 | 国产精品久久久久久久久久久久 | 精品国产一区二区三区久久久久久 | 久草电影在线观看 | 91精品国产自产老师啪 | 日韩av中文在线观看 | 96视频在线| 亚洲五月婷 | 成人精品久久 | 国产精品精品国产色婷婷 | 中文字幕在线观看你懂的 | 一区二区三区动漫 | 色欧美综合 | 欧美有色 | 99re在线视频观看 | 国内精自线一二区永久 | 麻豆国产视频下载 | 色资源二区在线视频 | 亚洲综合色视频在线观看 | 免费看的毛片 | 久久99国产精品久久99 | 韩日电影在线 | 久久这里精品视频 | 国产xxxxx在线观看 | 黄色小网站免费看 | 免费a视频| 97av免费视频 | 在线观看视频97 | 国产麻豆电影在线观看 | 日本久久中文字幕 | 亚洲第一av在线播放 | 国产理论免费 | 免费色视频网站 | www夜夜操 | 国产精品视频永久免费播放 | 插综合网 | 欧美成人日韩 | 天天操天天射天天舔 | 久久蜜臀一区二区三区av | 国产精品久久久亚洲 | 日韩二区在线观看 | 午夜视频欧美 | 99久免费精品视频在线观看 | 免费看黄视频 | 国产一区二区在线免费播放 | 国产精品成人av在线 | 日本夜夜草视频网站 | 久久综合九色综合97_ 久久久 | 欧美在线视频一区二区三区 | 99日韩精品 | 欧美精品亚州精品 | 国产精品久久久av | 免费亚洲一区二区 | 亚洲电影久久久 | 亚洲精品综合一区二区 | 91麻豆网| 欧美日韩免费网站 | 亚洲欧美日韩精品久久久 | 色999五月色 | 久久久久国产精品午夜一区 | 精品亚洲欧美无人区乱码 | 国产免费观看久久黄 | 欧美a级一区二区 | 天天操 夜夜操 | 国产精品亚洲视频 | 香蕉视频久久久 | 高清av中文在线字幕观看1 | 精品国产电影一区 | 国产麻豆精品95视频 | 久久激情婷婷 | 亚洲每日更新 | 欧美日韩不卡在线 | 激情av网 | 91色影院 | 爱干视频| 久草视频在 | 中文字幕第一页在线播放 | 狠狠操狠狠干2017 | 中文字幕日韩免费视频 | 特级毛片在线 | 黄色av电影免费观看 | 嫩嫩影院理论片 | 久久狠狠干| 99久久久国产精品美女 | 国产成人精品综合久久久久99 | 黄色大片免费网站 | 操老逼免费视频 | 国产精品美女久久久久久久网站 | 国产乱对白刺激视频不卡 | 亚洲成aⅴ人片久久青草影院 | 国产精品国产三级国产aⅴ入口 | 免费在线观看av的网站 | 中文字幕一区二区三区精华液 | 久久曰视频 | av电影在线观看完整版一区二区 | 97超碰中文字幕 | 日韩欧美视频免费在线观看 | a级国产片 | 国产一区二区在线观看免费 | 亚洲精选在线观看 | www最近高清中文国语在线观看 | 91高清在线看 | 水蜜桃亚洲一二三四在线 | 亚洲精品小视频 | 免费观看午夜视频 | 婷婷六月丁 | 色婷婷综合成人av | 中文字幕丰满人伦在线 | 免费在线播放av电影 | 色婷婷视频 | 蜜臀久久99精品久久久久久网站 | 97碰碰精品嫩模在线播放 | 亚洲国产片 | 亚洲老妇xxxxxx | 国产尤物在线视频 | 日韩激情免费视频 | 亚洲精品国产精品99久久 | 欧美日韩在线观看视频 | av成人在线看 | 色婷婷狠狠五月综合天色拍 | av在线日韩 | 国产精品久久久久影院日本 | 人人爽人人搞 | 免费看国产黄色 | 国产高清视频在线 | 婷婷色在线资源 | 久久亚洲综合色 | 久久人人插| 在线91视频 | 中文字幕日韩一区二区三区不卡 | 亚洲精品国偷拍自产在线观看蜜桃 | 天天干人人 | 黄色av影院 | 欧美成年人在线观看 | 精品在线视频观看 | 久久久久久久久黄色 | 开心激情婷婷 | 日韩色爱| 综合久久综合久久 | 国产精品日韩高清 | 国产一级在线免费观看 | 99热在线这里只有精品 | 伊人午夜| 视频在线一区二区三区 | a天堂一码二码专区 | 成人精品福利 | 正在播放国产91 | 成人国产精品一区二区 | 日韩一级黄色大片 | 一级一级一片免费 | 日韩成人欧美 | 欧美乱大交 | 狠狠干免费 | 美女久久视频 | www.一区二区三区 | 97色涩| 成人理论在线观看 | 国产精品自产拍在线观看蜜 | 国产成人三级在线观看 | www久久精品 | 亚洲色图激情文学 | 美女免费视频网站 | 探花视频在线版播放免费观看 | 天天综合区 | 亚洲视频免费在线看 | 国产免费视频在线 | 天天射天天射天天 | 国内精品久久久久影院一蜜桃 | 国产亚洲欧洲 | 亚洲自拍自偷 | 久久激情综合网 | 免费又黄又爽的视频 | 玖玖精品在线 | 69xxxx欧美| 69久久夜色精品国产69 | 国产精品99久久99久久久二8 | 在线只有精品 | 91成人精品观看 | 人人澡人人澡人人 | av在线之家电影网站 | 成人免费视频网 | 精品 一区 在线 | 久久99电影 | 久久久久久综合 | 一区精品在线 | 欧美一二区视频 | 91在线免费视频 | 国产精品久久久久久久久久东京 | 午夜精品成人一区二区三区 | 国产亚州av | 欧美在线视频日韩 | 一区二区视频播放 | 在线观看中文字幕dvd播放 | 久久影院精品 | 午夜久久久久久久 | 色网免费观看 | 日韩一区二区免费在线观看 | 国产精品淫 | 日韩精品一区二区在线观看视频 | 欧美性色黄大片在线观看 | 四虎5151久久欧美毛片 | 中文字幕 在线 一 二 | 一级黄色片在线 | 一区二区三区在线电影 | 91资源在线观看 | 黄网在线免费观看 | 8x成人免费视频 | 久久亚洲在线 | 视频高清| 天天操天天射天天添 | 91毛片在线| 高清av免费一区中文字幕 | 免费人成网ww44kk44 | 亚洲精品视频在线免费播放 | 国产一区二区午夜 | 可以免费看av | 色婷婷视频 | 欧美a级成人淫片免费看 | 99色免费视频 | 日韩亚洲在线 | 日日日视频 | 91av成人| 一区二区三区在线观看免费视频 | 人人干狠狠操 | 免费看国产曰批40分钟 | 成人av电影免费 | 久久男人视频 | 婷婷久月 | 五月天综合在线 | 深爱激情开心 | 亚州欧美精品 | 99热都是精品 | 免费高清在线视频一区· | 在线视频 你懂得 | 人人天天夜夜 | 中文字幕在线看片 | 亚洲精品自拍视频在线观看 | 国产日本三级 | 国产丝袜在线 | 最近免费在线观看 | 91av视频在线播放 | 国产一在线精品一区在线观看 | a在线免费观看视频 | 亚洲精品国产精品国 | 午夜久久久久久久久久久 | 国产99久久久精品 | 久久夜夜操 | 国产精品久久毛片 | 国产无限资源在线观看 | 成人黄色小视频 | 伊人影院得得 | 综合色播 | 97视频资源| 欧美日韩国产在线精品 | 国产精品成人免费一区久久羞羞 | 91亚州 | 丁香激情综合 | 日韩网站中文字幕 | 在线观看日韩中文字幕 | 婷婷国产在线 | 欧美在线一二 | 日韩 在线 | 精品久久精品 | 亚洲天堂网在线视频 | 免费在线看成人av | 波多野结衣理论片 | av黄色在线 | 久久久久久久久久久久亚洲 | 国产在线观看黄 | 久久精品视频播放 | 婷婷久久综合网 | 国产又粗又猛又色又黄网站 | 日本字幕网 | 久久成电影 | 四虎影视国产精品免费久久 | 日p视频| 日韩剧| 天天狠狠干 | 亚洲精品裸体 | 国产精品一区二区在线播放 | 亚洲午夜精品久久久久久久久久久久 | 久草在线欧美 | 国产精品 久久 | 免费男女网站 | 黄色片免费看 | 久久1电影院| 国产一二区视频 | 国产成人一区二区在线观看 | 免费av网站在线看 | 天天干天天综合 | 日韩一区二区三区观看 | 欧美最猛性xxxxx(亚洲精品) |