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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

iOS硬解码H264视频流

發(fā)布時(shí)間:2023/12/9 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS硬解码H264视频流 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

????????蘋(píng)果在iOS 8.0系統(tǒng)之前若要做音視頻開(kāi)發(fā)需使用第三方軟件進(jìn)行編解碼(FFmpeg軟解碼H264視頻流可看到這里),學(xué)習(xí)成本較大,項(xiàng)目開(kāi)發(fā)進(jìn)度也可能超出預(yù)期。在iOS 8.0之后開(kāi)放了視頻編解碼框架VideoToolbox,在此之后對(duì)于音視頻開(kāi)發(fā)變得相對(duì)簡(jiǎn)單。

?

?

?

一、硬解碼名詞(結(jié)構(gòu))解釋

1、VTDecompressionSessionRef:解碼器對(duì)象數(shù)據(jù)結(jié)構(gòu);

2、CMVideoFormatDescriptionRef:圖形解碼相關(guān)格式及描述;

3、CVPixelBufferRef:編碼前和解碼后的圖像數(shù)據(jù)結(jié)構(gòu);

4、CMBlockBufferRef:存在解碼前圖像數(shù)據(jù)內(nèi)存結(jié)構(gòu);

5、CMSampleBufferRef:存放解碼前的視頻圖像的容器數(shù)據(jù)結(jié)構(gòu);

6、AVSampleBufferDisplayLayer:以CMSampleBufferRef進(jìn)行解碼并顯示Layer圖層;

7、SPSPPS:h.264解碼參數(shù)信息;IDR:h.264視頻流I幀;

二、H264硬解碼流程圖

?

三:IDR(I幀)網(wǎng)絡(luò)裸流數(shù)據(jù)結(jié)構(gòu)

????????一般情況下網(wǎng)絡(luò)視頻裸流I幀中基本會(huì)包含SPS、PPS、SEI、IDR幀數(shù)據(jù),如下圖所示,但是部分只含有IDR幀數(shù)據(jù),其他解碼參數(shù)信息被單獨(dú)已Slice獲取。

?

四、硬解碼相關(guān)接口

?

1、初始化H264硬解解碼器

1)使用CMVideoFormatDescriptionCreateFromH264ParameterSets函數(shù)構(gòu)建解碼描述結(jié)構(gòu)CMVideoFormatDescriptionRef

const uint8_t *const parameterSetPointers[2] = {pSPS,pPPS};const size_t parameterSetSizes[2] = {mSpsSize, mPpsSize};OSStatus status = CMVideoFormatDescriptionCreateFromH264ParameterSets(kCFAllocatorDefault,2, //參數(shù)個(gè)數(shù),主要包含SPS、PPSparameterSetPointers,parameterSetSizes,4, //NALU起始位個(gè)數(shù)&mDecoderFormatDescription);

2)使用VTDecompressionSessionCreate函數(shù)構(gòu)建解碼器結(jié)構(gòu)VTDecompressionSessionRef

?

uint32_t pixelFormatType = kCVPixelFormatType_420YpCbCr8BiPlanarFullRange; //NV12const void *keys[] = { kCVPixelBufferPixelFormatTypeKey };const void *values[] = { CFNumberCreate(NULL, kCFNumberSInt32Type, &pixelFormatType) }; //32位CFDictionaryRef attrs = CFDictionaryCreate(NULL, keys, values, 1, NULL, NULL);VTDecompressionOutputCallbackRecord callBackRecord;callBackRecord.decompressionOutputCallback = didDecompress; callBackRecord.decompressionOutputRefCon = NULL;status = VTDecompressionSessionCreate(kCFAllocatorDefault,mDecoderFormatDescription,NULL, attrs,&callBackRecord,&mDeocderSession);CFRelease(attrs);

2、H264硬件解碼

1)將視頻裸流數(shù)據(jù)構(gòu)建成CMBlockBufferRef,主要目的是進(jìn)一步轉(zhuǎn)換為CMSampleBufferRef

????CMBlockBufferRef blockBuffer = NULL;OSStatus status = CMBlockBufferCreateWithMemoryBlock(kCFAllocatorDefault, (void *)videoBuffer, videoBufferSize, kCFAllocatorNull, NULL, 0, videoBufferSize, 0, &blockBuffer); CMSampleBufferRef sampleBuffer = NULL;const size_t sampleSizeArray[] = { videoBufferSize };OSStatus status = CMSampleBufferCreateReady(kCFAllocatorDefault, blockBuffer, mDecoderFormatDescription , 1, 0, NULL, 1, sampleSizeArray, &sampleBuffer);

2)將CMSampleBufferRef結(jié)構(gòu)送入VTDecompressionSessionDecodeFrame函數(shù)進(jìn)行解碼處理:

VTDecodeFrameFlags flags = 0;VTDecodeInfoFlags flagOut = 0;CVPixelBufferRef outputPixelBuffer = NULL;OSStatus decodeStatus = VTDecompressionSessionDecodeFrame(mDeocderSession, sampleBuffer, flags, &outputPixelBuffer, &flagOut);

3)若使用AVSampleBufferDisplayLayer圖層進(jìn)行直接顯示,可忽略上一步的還行,直接將CMSampleBufferRef送入AVSampleBufferDisplayLayer進(jìn)行顯示:

CFArrayRef attachments = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, YES);CFMutableDictionaryRef dict = (CFMutableDictionaryRef)CFArrayGetValueAtIndex(attachments, 0);CFDictionarySetValue(dict, kCMSampleAttachmentKey_DisplayImmediately, kCFBooleanTrue);if ([self.displayLayer isReadyForMoreMediaData]) {@weakify(self);dispatch_sync(dispatch_get_main_queue(),^{@strongify(self);[self.displayLayer enqueueSampleBuffer:sampleBuffer];});}

3、解碼之后的數(shù)據(jù)顯示

????????在本文中支持3種顯示方式:UIImageCVPixelBufferRefAVSampleBufferDisplayLayer,因在項(xiàng)目中需要UIImage,所以被默認(rèn)轉(zhuǎn)化模式。

CVPixelBufferRef:即不進(jìn)行UIImage轉(zhuǎn)換而直接輸出的方式;

AVSampleBufferDisplayLayer:不進(jìn)行代碼邏輯解碼,被Layer層自行解碼和顯示;

UIImage:通過(guò)CVPixelBufferRef進(jìn)一步轉(zhuǎn)化所得(提供了2種轉(zhuǎn)化方法,可在后面代碼中查看):

CIImage *ciImage = [CIImage imageWithCVPixelBuffer:pixelBuffer];CIContext *temporaryContext = [CIContext contextWithOptions:nil];CGImageRef videoImage = [temporaryContext createCGImage:ciImage fromRect:CGRectMake(0, 0, CVPixelBufferGetWidth(pixelBuffer), CVPixelBufferGetHeight(pixelBuffer))];image = [[UIImage alloc] initWithCGImage:videoImage];CGImageRelease(videoImage);

五、完整H264解碼代碼

????????本人原則上主張自主編寫(xiě)相關(guān)代碼并學(xué)習(xí)相應(yīng)的知識(shí),在此貼出iOS對(duì)H264視頻裸流硬解碼的完整代碼,各位可進(jìn)行參考或?qū)W習(xí),若存在問(wèn)題或者疑問(wèn)歡迎留言。代碼中關(guān)于CLog接口為打印輸出,可自行屏蔽。

// // H264HwDecoder.h // IOTCamera // // Created by lzj<lizhijian_21@163.com> on 2017/2/18. // Copyright (c) 2017 LZJ. All rights reserved. //#import <Foundation/Foundation.h> #import <VideoToolbox/VideoToolbox.h> #import <AVFoundation/AVSampleBufferDisplayLayer.h>typedef enum : NSUInteger {H264HWDataType_Image = 0,H264HWDataType_Pixel,H264HWDataType_Layer, } H264HWDataType;@interface H264HwDecoder : NSObject@property (nonatomic,assign) H264HWDataType showType; //顯示類(lèi)型 @property (nonatomic,strong) UIImage *image; //解碼成RGB數(shù)據(jù)時(shí)的IMG @property (nonatomic,assign) CVPixelBufferRef pixelBuffer; //解碼成YUV數(shù)據(jù)時(shí)的解碼BUF @property (nonatomic,strong) AVSampleBufferDisplayLayer *displayLayer; //顯示圖層@property (nonatomic,assign) BOOL isNeedPerfectImg; //是否讀取完整UIImage圖形(showType為0時(shí)才有效)- (instancetype)init;/**H264視頻流解碼@param videoData 視頻幀數(shù)據(jù)@param videoSize 視頻幀大小@return 視圖的寬高(width, height),當(dāng)為接收為AVSampleBufferDisplayLayer時(shí)返回接口是無(wú)效的*/ - (CGSize)decodeH264VideoData:(uint8_t *)videoData videoSize:(NSInteger)videoSize;/**釋放解碼器*/ - (void)releaseH264HwDecoder;/**視頻截圖@return IMG*/ - (UIImage *)snapshot;@end // // H264HwDecoder.m // IOTCamera // // Created by lzj<lizhijian_21@163.com> on 2017/2/18. // Copyright (c) 2017 LZJ. All rights reserved. //#import "H264HwDecoder.h"#ifndef FreeCharP #define FreeCharP(p) if (p) {free(p); p = NULL;} #endiftypedef enum : NSUInteger {HWVideoFrameType_UNKNOWN = 0,HWVideoFrameType_I,HWVideoFrameType_P,HWVideoFrameType_B,HWVideoFrameType_SPS,HWVideoFrameType_PPS,HWVideoFrameType_SEI, } HWVideoFrameType;@interface H264HwDecoder () {VTDecompressionSessionRef mDeocderSession;CMVideoFormatDescriptionRef mDecoderFormatDescription;uint8_t *pSPS;uint8_t *pPPS;uint8_t *pSEI;NSInteger mSpsSize;NSInteger mPpsSize;NSInteger mSeiSize;NSInteger mINalCount; //I幀起始碼個(gè)數(shù)NSInteger mPBNalCount; //P、B幀起始碼個(gè)數(shù)NSInteger mINalIndex; //I幀起始碼開(kāi)始位BOOL mIsNeedReinit; //需要重置解碼器 }@endstatic void didDecompress(void *decompressionOutputRefCon, void *sourceFrameRefCon, OSStatus status, VTDecodeInfoFlags infoFlags, CVImageBufferRef pixelBuffer, CMTime presentationTimeStamp, CMTime presentationDuration ) {CVPixelBufferRef *outputPixelBuffer = (CVPixelBufferRef *)sourceFrameRefCon;*outputPixelBuffer = CVPixelBufferRetain(pixelBuffer); }@implementation H264HwDecoder- (instancetype)init {if (self = [super init]) {pSPS = pPPS = pSEI = NULL;mSpsSize = mPpsSize = mSeiSize = 0;mINalCount = mPBNalCount = mINalIndex = 0;mIsNeedReinit = NO;_showType = H264HWDataType_Image;_isNeedPerfectImg = NO;_pixelBuffer = NULL;}return self; }- (void)dealloc {[self releaseH264HwDecoder]; }- (BOOL)initH264HwDecoder {if (mDeocderSession) {return YES;}const uint8_t *const parameterSetPointers[2] = {pSPS,pPPS};const size_t parameterSetSizes[2] = {mSpsSize, mPpsSize};OSStatus status = CMVideoFormatDescriptionCreateFromH264ParameterSets(kCFAllocatorDefault, 2, parameterSetPointers, parameterSetSizes, 4, &mDecoderFormatDescription);if (status == noErr) {// kCVPixelFormatType_420YpCbCr8Planar is YUV420// kCVPixelFormatType_420YpCbCr8BiPlanarFullRange is NV12// kCVPixelFormatType_24RGB //使用24位bitsPerPixel// kCVPixelFormatType_32BGRA //使用32位bitsPerPixel,kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirstuint32_t pixelFormatType = kCVPixelFormatType_420YpCbCr8BiPlanarFullRange; //NV12if (self.showType == H264HWDataType_Pixel) {pixelFormatType = kCVPixelFormatType_420YpCbCr8Planar;}const void *keys[] = { kCVPixelBufferPixelFormatTypeKey };const void *values[] = { CFNumberCreate(NULL, kCFNumberSInt32Type, &pixelFormatType) };CFDictionaryRef attrs = CFDictionaryCreate(NULL, keys, values, 1, NULL, NULL);VTDecompressionOutputCallbackRecord callBackRecord;callBackRecord.decompressionOutputCallback = didDecompress;callBackRecord.decompressionOutputRefCon = NULL;status = VTDecompressionSessionCreate(kCFAllocatorDefault,mDecoderFormatDescription,NULL, attrs,&callBackRecord,&mDeocderSession);CFRelease(attrs);CLog(@"Init H264 hardware decoder success");} else {CLog([NSString stringWithFormat:@"Init H264 hardware decoder fail: %d", (int)status]);return NO;}return YES; }- (void)removeH264HwDecoder {if(mDeocderSession) {VTDecompressionSessionInvalidate(mDeocderSession);CFRelease(mDeocderSession);mDeocderSession = NULL;}if(mDecoderFormatDescription) {CFRelease(mDecoderFormatDescription);mDecoderFormatDescription = NULL;} }- (void)releaseH264HwDecoder {[self removeH264HwDecoder];[self releaseSliceInfo];if (_pixelBuffer) {CVPixelBufferRelease(_pixelBuffer);_pixelBuffer = NULL;} }- (void)releaseSliceInfo {FreeCharP(pSPS);FreeCharP(pPPS);FreeCharP(pSEI);mSpsSize = 0;mPpsSize = 0;mSeiSize = 0; }//將視頻數(shù)據(jù)封裝成CMSampleBufferRef進(jìn)行解碼 - (CVPixelBufferRef)decode:(uint8_t *)videoBuffer videoSize:(NSInteger)videoBufferSize {CVPixelBufferRef outputPixelBuffer = NULL;CMBlockBufferRef blockBuffer = NULL;OSStatus status = CMBlockBufferCreateWithMemoryBlock(kCFAllocatorDefault, (void *)videoBuffer, videoBufferSize, kCFAllocatorNull, NULL, 0, videoBufferSize, 0, &blockBuffer);if (status == kCMBlockBufferNoErr) {CMSampleBufferRef sampleBuffer = NULL;const size_t sampleSizeArray[] = { videoBufferSize };status = CMSampleBufferCreateReady(kCFAllocatorDefault, blockBuffer, mDecoderFormatDescription , 1, 0, NULL, 1, sampleSizeArray, &sampleBuffer);if (status == kCMBlockBufferNoErr && sampleBuffer) {if (self.showType == H264HWDataType_Layer && _displayLayer) {CFArrayRef attachments = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, YES);CFMutableDictionaryRef dict = (CFMutableDictionaryRef)CFArrayGetValueAtIndex(attachments, 0);CFDictionarySetValue(dict, kCMSampleAttachmentKey_DisplayImmediately, kCFBooleanTrue);if ([self.displayLayer isReadyForMoreMediaData]) {@weakify(self);dispatch_sync(dispatch_get_main_queue(),^{@strongify(self);[self.displayLayer enqueueSampleBuffer:sampleBuffer];});}CFRelease(sampleBuffer);} else {VTDecodeFrameFlags flags = 0;VTDecodeInfoFlags flagOut = 0;OSStatus decodeStatus = VTDecompressionSessionDecodeFrame(mDeocderSession, sampleBuffer, flags, &outputPixelBuffer, &flagOut);CFRelease(sampleBuffer);if (decodeStatus == kVTVideoDecoderMalfunctionErr) {CLog(@"Decode failed status: kVTVideoDecoderMalfunctionErr");CVPixelBufferRelease(outputPixelBuffer);outputPixelBuffer = NULL;} else if(decodeStatus == kVTInvalidSessionErr) {CLog(@"Invalid session, reset decoder session");[self removeH264HwDecoder];} else if(decodeStatus == kVTVideoDecoderBadDataErr) {CLog([NSString stringWithFormat:@"Decode failed status=%d(Bad data)", (int)decodeStatus]);} else if(decodeStatus != noErr) {CLog([NSString stringWithFormat:@"Decode failed status=%d", (int)decodeStatus]);}}}CFRelease(blockBuffer);}return outputPixelBuffer; }- (CGSize)decodeH264VideoData:(uint8_t *)videoData videoSize:(NSInteger)videoSize {CGSize imageSize = CGSizeMake(0, 0);if (videoData && videoSize > 0) {HWVideoFrameType frameFlag = [self analyticalData:videoData size:videoSize];if (mIsNeedReinit) {mIsNeedReinit = NO;[self removeH264HwDecoder];}if (pSPS && pPPS && (frameFlag == HWVideoFrameType_I || frameFlag == HWVideoFrameType_P || frameFlag == HWVideoFrameType_B)) {uint8_t *buffer = NULL;if (frameFlag == HWVideoFrameType_I) {int nalExtra = (mINalCount==3?1:0); //如果是3位的起始碼,轉(zhuǎn)為大端時(shí)需要增加1位videoSize -= mINalIndex;buffer = (uint8_t *)malloc(videoSize + nalExtra);memcpy(buffer + nalExtra, videoData + mINalIndex, videoSize);videoSize += nalExtra;} else {int nalExtra = (mPBNalCount==3?1:0);buffer = (uint8_t *)malloc(videoSize + nalExtra);memcpy(buffer + nalExtra, videoData, videoSize);videoSize += nalExtra;}uint32_t nalSize = (uint32_t)(videoSize - 4);uint32_t *pNalSize = (uint32_t *)buffer;*pNalSize = CFSwapInt32HostToBig(nalSize);CVPixelBufferRef pixelBuffer = NULL;if ([self initH264HwDecoder]) {pixelBuffer = [self decode:buffer videoSize:videoSize];if(pixelBuffer) {NSInteger width = CVPixelBufferGetWidth(pixelBuffer);NSInteger height = CVPixelBufferGetHeight(pixelBuffer);imageSize = CGSizeMake(width, height);if (self.showType == H264HWDataType_Pixel) {if (_pixelBuffer) {CVPixelBufferRelease(_pixelBuffer);}self.pixelBuffer = CVPixelBufferRetain(pixelBuffer);} else {if (frameFlag == HWVideoFrameType_B) { //若B幀未進(jìn)行亂序解碼,順序播放,則在此需要去除,否則解碼圖形則是灰色。size_t planeCount = CVPixelBufferGetPlaneCount(pixelBuffer);if (planeCount >= 2 && planeCount <= 3) {CVPixelBufferLockBaseAddress(pixelBuffer, 0);u_char *yDestPlane = (u_char *)CVPixelBufferGetBaseAddressOfPlane(pixelBuffer, 0);if (planeCount == 2) {u_char *uvDestPlane = (u_char *)CVPixelBufferGetBaseAddressOfPlane(pixelBuffer, 1);if (yDestPlane[0] == 0x80 && uvDestPlane[0] == 0x80 && uvDestPlane[1] == 0x80) {frameFlag = HWVideoFrameType_UNKNOWN;NSLog(@"Video YUV data parse error: Y=%02x U=%02x V=%02x", yDestPlane[0], uvDestPlane[0], uvDestPlane[1]);}} else if (planeCount == 3) {u_char *uDestPlane = (u_char *)CVPixelBufferGetBaseAddressOfPlane(pixelBuffer, 1);u_char *vDestPlane = (u_char *)CVPixelBufferGetBaseAddressOfPlane(pixelBuffer, 2);if (yDestPlane[0] == 0x80 && uDestPlane[0] == 0x80 && vDestPlane[0] == 0x80) {frameFlag = HWVideoFrameType_UNKNOWN;NSLog(@"Video YUV data parse error: Y=%02x U=%02x V=%02x", yDestPlane[0], uDestPlane[0], vDestPlane[0]);}}CVPixelBufferUnlockBaseAddress(pixelBuffer, 0);}}if (frameFlag != HWVideoFrameType_UNKNOWN) {self.image = [self pixelBufferToImage:pixelBuffer];}}CVPixelBufferRelease(pixelBuffer);}}FreeCharP(buffer);}}return imageSize; }- (UIImage *)pixelBufferToImage:(CVPixelBufferRef)pixelBuffer {UIImage *image = nil;if (!self.isNeedPerfectImg) {//第1種繪制(可直接顯示,不可保存為文件(無(wú)效缺少圖像描述參數(shù)))CIImage *ciImage = [CIImage imageWithCVPixelBuffer:pixelBuffer];image = [UIImage imageWithCIImage:ciImage];} else {//第2種繪制(可直接顯示,可直接保存為文件,相對(duì)第一種性能消耗略大)CIImage *ciImage = [CIImage imageWithCVPixelBuffer:pixelBuffer];CIContext *temporaryContext = [CIContext contextWithOptions:nil];CGImageRef videoImage = [temporaryContext createCGImage:ciImage fromRect:CGRectMake(0, 0, CVPixelBufferGetWidth(pixelBuffer), CVPixelBufferGetHeight(pixelBuffer))];image = [[UIImage alloc] initWithCGImage:videoImage];CGImageRelease(videoImage);}return image; }- (UIImage *)snapshot {UIImage *img = nil;if (self.displayLayer) {UIGraphicsBeginImageContext(self.displayLayer.bounds.size);[self.displayLayer renderInContext:UIGraphicsGetCurrentContext()];img = UIGraphicsGetImageFromCurrentImageContext();UIGraphicsEndImageContext();} else {if (self.showType == H264HWDataType_Pixel) {if (self.pixelBuffer) {img = [self pixelBufferToImage:self.pixelBuffer];}} else {img = self.image;}if (!self.isNeedPerfectImg) {UIGraphicsBeginImageContext(CGSizeMake(img.size.width, img.size.height));[img drawInRect:CGRectMake(0, 0, img.size.width, img.size.height)];img = UIGraphicsGetImageFromCurrentImageContext();UIGraphicsEndImageContext();}}return img; }//從起始位開(kāi)始查詢(xún)SPS、PPS、SEI、I、B、P幀起始碼,遇到I、P、B幀則退出 //存在多種情況: //1、起始碼是0x0 0x0 0x0 0x01 或 0x0 0x0 0x1 //2、每個(gè)SPS、PPS、SEI、I、B、P幀為單獨(dú)的Slice //3、I幀中包含SPS、PPS、I數(shù)據(jù)Slice //4、I幀中包含第3點(diǎn)的數(shù)據(jù)之外還包含SEI,順序:SPS、PPS、SEI、I //5、起始位是AVCC協(xié)議格式的大端數(shù)據(jù)(不支持多Slice的視頻幀) - (HWVideoFrameType)analyticalData:(const uint8_t *)buffer size:(NSInteger)size {NSInteger preIndex = 0;HWVideoFrameType preFrameType = HWVideoFrameType_UNKNOWN;HWVideoFrameType curFrameType = HWVideoFrameType_UNKNOWN;for (int i=0; i<size && i<300; i++) { //一般第四種情況下的幀起始信息不會(huì)超過(guò)(32+256+12)位,可適當(dāng)增大,為了不循環(huán)整個(gè)幀片數(shù)據(jù)int nalSize = [self getNALHeaderLen:(buffer + i) size:size-i];if (nalSize == 0 && i == 0) { //當(dāng)每個(gè)Slice起始位開(kāi)始若使用AVCC協(xié)議則判斷幀大小是否一致uint32_t *pNalSize = (uint32_t *)(buffer);uint32_t videoSize = CFSwapInt32BigToHost(*pNalSize); //大端模式轉(zhuǎn)為系統(tǒng)端模式if (videoSize == size - 4) { //是大端模式(AVCC)nalSize = 4;}}if (nalSize && i + nalSize + 1 < size) {int sliceType = buffer[i + nalSize] & 0x1F;if (sliceType == 0x1) {mPBNalCount = nalSize;if (buffer[i + nalSize] == 0x1) { //B幀curFrameType = HWVideoFrameType_B;} else { //P幀curFrameType = HWVideoFrameType_P;}break;} else if (sliceType == 0x5) { //IDR(I幀)if (preFrameType == HWVideoFrameType_PPS) {mIsNeedReinit = [self getSliceInfo:buffer slice:&pPPS size:&mPpsSize start:preIndex end:i];} else if (preFrameType == HWVideoFrameType_SEI) {[self getSliceInfo:buffer slice:&pSEI size:&mSeiSize start:preIndex end:i];}mINalCount = nalSize;mINalIndex = i;curFrameType = HWVideoFrameType_I;goto Goto_Exit;} else if (sliceType == 0x7) { //SPSpreFrameType = HWVideoFrameType_SPS;preIndex = i + nalSize;i += nalSize;} else if (sliceType == 0x8) { //PPSif (preFrameType == HWVideoFrameType_SPS) {mIsNeedReinit = [self getSliceInfo:buffer slice:&pSPS size:&mSpsSize start:preIndex end:i];}preFrameType = HWVideoFrameType_PPS;preIndex = i + nalSize;i += nalSize;} else if (sliceType == 0x6) { //SEIif (preFrameType == HWVideoFrameType_PPS) {mIsNeedReinit = [self getSliceInfo:buffer slice:&pPPS size:&mPpsSize start:preIndex end:i];}preFrameType = HWVideoFrameType_SEI;preIndex = i + nalSize;i += nalSize;}}}//SPS、PPS、SEI為單獨(dú)的Slice幀片if (curFrameType == HWVideoFrameType_UNKNOWN && preIndex != 0) {if (preFrameType == HWVideoFrameType_SPS) {mIsNeedReinit = [self getSliceInfo:buffer slice:&pSPS size:&mSpsSize start:preIndex end:size];curFrameType = HWVideoFrameType_SPS;} else if (preFrameType == HWVideoFrameType_PPS) {mIsNeedReinit = [self getSliceInfo:buffer slice:&pPPS size:&mPpsSize start:preIndex end:size];curFrameType = HWVideoFrameType_PPS;} else if (preFrameType == HWVideoFrameType_SEI) {[self getSliceInfo:buffer slice:&pSEI size:&mSeiSize start:preIndex end:size];curFrameType = HWVideoFrameType_SEI;}}Goto_Exit:return curFrameType; }//獲取NAL的起始碼長(zhǎng)度是3還4 - (int)getNALHeaderLen:(const uint8_t *)buffer size:(NSInteger)size {if (size >= 4 && buffer[0] == 0x0 && buffer[1] == 0x0 && buffer[2] == 0x0 && buffer[3] == 0x1) {return 4;} else if (size >= 3 && buffer[0] == 0x0 && buffer[1] == 0x0 && buffer[2] == 0x1) {return 3;}return 0; }//給SPS、PPS、SEI的Buf賦值,返回YES表示不同于之前的值 - (BOOL)getSliceInfo:(const uint8_t *)videoBuf slice:(uint8_t **)sliceBuf size:(NSInteger *)size start:(NSInteger)start end:(NSInteger)end {BOOL isDif = NO;NSInteger len = end - start;uint8_t *tempBuf = (uint8_t *)(*sliceBuf);if (tempBuf) {if (len != *size || memcmp(tempBuf, videoBuf + start, len) != 0) {free(tempBuf);tempBuf = (uint8_t *)malloc(len);memcpy(tempBuf, videoBuf + start, len);*sliceBuf = tempBuf;*size = len;isDif = YES;}} else {tempBuf = (uint8_t *)malloc(len);memcpy(tempBuf, videoBuf + start, len);*sliceBuf = tempBuf;*size = len;}return isDif; }@end

總結(jié)

以上是生活随笔為你收集整理的iOS硬解码H264视频流的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

狠狠色丁香婷婷综合橹88 | 久久伊人操 | 亚洲资源在线网 | 亚洲成人网在线 | 免费观看第二部31集 | 久久久国产精品电影 | aaawww| 亚洲热久久 | 91精品国产自产在线观看 | 2019精品手机国产品在线 | 免费在线色| 91探花系列在线播放 | 亚洲精品一区二区久 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 碰超在线观看 | 日韩高清二区 | 久久99热精品 | 日韩免费看片 | 免费成人结看片 | 欧美成人黄色片 | 狠狠色狠狠色合久久伊人 | 日本一区二区不卡高清 | 色欧美成人精品a∨在线观看 | 久久精品第一页 | 在线观看日韩精品 | 99c视频在线 | 欧美日韩在线第一页 | 免费福利在线 | 色偷偷av男人天堂 | 婷婷五月色综合 | 亚洲成人av在线电影 | 成年人在线免费看片 | 久久综合操 | 韩国精品视频在线观看 | 五月开心六月伊人色婷婷 | 91亚色在线观看 | 天天干天天操天天拍 | 18女毛片| 91视频在线播放视频 | 国产精品伦一区二区三区视频 | 国产精品视屏 | 手机在线看a | 亚洲视屏在线播放 | 亚洲精品久久视频 | 91精品小视频 | 日韩videos高潮hd | 天堂在线成人 | 成人综合日日夜夜 | 国产丝袜高跟 | 九九导航 | 久久久久久综合网天天 | 久久久久久免费毛片精品 | 婷婷综合网 | 日韩在线看片 | 欧美日韩视频在线一区 | 五月天综合网站 | 午夜精品一区二区三区免费视频 | 久色小说 | av福利在线播放 | 99久久久国产免费 | 97在线免费 | 性色va | 国产精品久久视频 | 色妞色视频一区二区三区四区 | 亚洲精品视频免费看 | 日韩欧美高清免费 | 久久曰视频 | 国产不卡在线看 | 亚洲美女在线一区 | 九九免费精品视频在线观看 | 97视频免费在线观看 | 91精品国产自产在线观看永久 | 国产精品福利在线 | 在线视频中文字幕一区 | 精品久久久久久久久亚洲 | 久久久久久久久国产 | 在线免费观看欧美日韩 | 天天射,天天干 | 欧美日韩电影在线播放 | 狠狠干夜夜操 | 日日夜夜网站 | 色停停五月天 | 99久久精品国产欧美主题曲 | 成人av手机在线 | 91大神免费视频 | 麻豆一区在线观看 | 五月婷婷中文网 | 操碰av| 麻豆视频入口 | 亚洲精品99久久久久中文字幕 | 成年人电影免费在线观看 | 成人国产网址 | 日韩精品首页 | 操老逼免费视频 | 亚洲美女精品视频 | 中文字幕在线免费看 | 免费观看丰满少妇做爰 | 91九色网站| 久久久精品 | 亚洲欧洲视频 | 国产精品你懂的在线观看 | 国产伦精品一区二区三区高清 | 欧美影片 | 色婷婷久久一区二区 | 中文字幕xxxx | 天天做天天爱天天综合网 | 玖玖玖影院 | 久久精品在线 | 91xav| 国产 一区二区三区 在线 | 精品嫩模福利一区二区蜜臀 | 免费在线成人av | 久久综合偷偷噜噜噜色 | 日韩欧美高清免费 | 国产综合精品一区二区三区 | 国产美女网站在线观看 | 成年人在线播放视频 | 92av视频| 午夜精品在线看 | 午夜精品电影 | 激情小说网站亚洲综合网 | 狠狠干成人综合网 | 国产精品一区电影 | 99精品影视 | 六月色丁香 | 久久成人亚洲欧美电影 | 亚洲欧洲国产精品 | 日韩久久片 | 六月天色婷婷 | 亚洲精品在线观看av | 奇米777777| 99久久超碰中文字幕伊人 | 97热视频 | 欧美日韩不卡一区二区三区 | 欧美性大战久久久久 | 日韩成人免费观看 | av先锋影音少妇 | 中文字幕一区二区三区乱码在线 | 亚洲精品久久久久久久不卡四虎 | 亚洲精品视频在 | 久久久久国产一区二区三区四区 | 国产小视频你懂的 | 久久免费观看视频 | 欧美 日韩 性 | 国产精品免费观看在线 | 人人澡超碰碰 | 欧美性久久久久久 | 日韩最新在线视频 | av日韩不卡| 久草久热 | 四虎永久免费网站 | 在线观看视频你懂的 | 久久久久久久久久久影视 | 免费看一级黄色 | 天天人人 | 欧美日韩国产高清视频 | 国产精彩视频一区 | 亚洲综合欧美日韩狠狠色 | 五月婷婷在线观看视频 | 手机成人免费视频 | 综合天天色 | www99久久 | 国产午夜三级一区二区三 | 午夜免费福利视频 | 夜夜爽88888免费视频4848 | 久久视频99 | 亚洲精品中文字幕在线观看 | 国产一区视频免费在线观看 | 久久精品艹 | 日韩在线视频免费播放 | 免费试看一区 | 激情av一区二区 | 日韩欧美精品在线 | 午夜少妇av | 亚洲精品视频在线观看免费视频 | 国产精品日韩久久久久 | 97免费在线视频 | 久久久久99精品国产片 | 亚洲精品国产拍在线 | 在线三级av | av解说在线 | 丁香视频五月 | 亚洲免费精品视频 | 亚洲国产操 | 久久久久久中文字幕 | 亚洲精品在线观看网站 | 国产精品久久久久久久久久直播 | 欧美日韩国产亚洲乱码字幕 | 韩国在线一区 | a天堂最新版中文在线地址 久久99久久精品国产 | 嫩嫩影院理论片 | 国产又粗又硬又爽的视频 | 久久国产精品久久国产精品 | 久久观看| 日日干天天操 | 久久草网站 | 天天干天天干天天干天天干天天干天天干 | 4p变态网欧美系列 | 五月天婷婷视频 | 特级黄色电影 | 国产无套精品久久久久久 | 最近乱久中文字幕 | 亚洲人久久久 | 国产午夜三级一区二区三 | 天天操夜夜操国产精品 | japanesexxx乱女另类 | 在线观看91精品视频 | 精品欧美小视频在线观看 | 国产精品亚洲综合久久 | 久久久久久久久免费 | 天天色天天色天天色 | 国产精品永久免费在线 | 亚洲精品美女在线观看播放 | 国产午夜三级一区二区三桃花影视 | 国产一区二区高清不卡 | 国产成人一区二区三区电影 | 成 人 免费 黄 色 视频 | 在线播放精品一区二区三区 | 国产精品久久久久久久婷婷 | 五月婷婷开心中文字幕 | 91精品啪在线观看国产线免费 | 国产精品美女久久久 | 99在线观看视频网站 | 午夜视频在线网站 | 手机看片午夜 | 日韩视频一区二区三区在线播放免费观看 | 日本成人黄色片 | 久久 地址| 就要干b | 黄色大全视频 | 亚州黄色一级 | 国产成人综合在线观看 | 97国产精品亚洲精品 | 国产视频在线看 | 亚洲精品五月 | 欧美日韩免费观看一区=区三区 | 成人黄色小说在线观看 | 不卡精品视频 | 国产精品久久久久久久久久久久 | 国产精品成人国产乱一区 | 免费看v片 | 欧美日韩69 | 热re99久久精品国产66热 | 欧美另类sm图片 | 99热在线观看 | 亚洲精品一区二区精华 | av看片网址| 国产高清无av久久 | 热99在线| 99久久婷婷| 亚洲精品国精品久久99热 | 亚洲一区二区观看 | 91精品福利在线 | 六月丁香激情综合色啪小说 | 婷婷六月综合亚洲 | 91福利社区在线观看 | 99免费在线视频观看 | 中文字幕在线看 | 国产高清亚洲 | 人人讲下载 | 91精彩视频 | 奇米影视四色8888 | 狠狠五月婷婷 | 久久精品99国产精品酒店日本 | 色六月婷婷 | 国产精品去看片 | 久久精品一区二区三区国产主播 | 亚洲精品午夜aaa久久久 | 国产免费成人av | 国色天香在线观看 | 午夜免费福利片 | 日韩精品一区二区三区丰满 | 九九热国产视频 | 精品国产一区二区三区四区在线观看 | 人人狠| 亚洲我射av | 开心激情婷婷 | 久久精品国产一区二区 | www.天天干 | 婷婷亚洲最大 | 婷婷资源站 | 狠狠插天天干 | 麻豆成人网 | www.激情五月.com | 精品国产综合区久久久久久 | 91精彩视频在线观看 | 久久婷婷亚洲 | 国产视频1 | www.com久久久| 日韩在线免费看 | 亚洲成熟女人毛片在线 | 国产午夜精品一区二区三区嫩草 | 日本精品久久久久中文字幕5 | 日韩色爱 | 久久福利电影 | av高清不卡 | 亚洲情感电影大片 | 亚欧日韩av| 24小时日本在线www免费的 | 国产精品免费久久久久久 | 免费观看性生交 | 色综合久久精品 | www.夜夜操.com| 久久综合九色综合欧美就去吻 | 久久香蕉影视 | 国产伦理久久精品久久久久_ | 天天草天天爽 | 2023天天干 | 日韩午夜三级 | 精品亚洲成a人在线观看 | 久艹视频免费观看 | 日韩美女av在线 | 欧美了一区在线观看 | 日本精品免费看 | 麻豆视频在线免费看 | 亚洲一区二区视频在线 | 成人在线小视频 | 国产精品久久久久国产a级 激情综合中文娱乐网 | 99热这里只有精品免费 | 欧美a√在线| 欧美少妇xxxxxx | 日韩欧美一区视频 | 免费亚洲黄色 | 日本午夜在线亚洲.国产 | 国产一区成人在线 | 麻豆视频在线免费观看 | 日韩大陆欧美高清视频区 | 在线免费看黄色 | www成人精品 | 欧美a级成人淫片免费看 | 久久久一本精品99久久精品66 | 国产中文字幕三区 | 欧美日韩国产亚洲乱码字幕 | 国产九九九精品视频 | 在线播放 日韩专区 | 欧美日韩亚洲精品在线 | 一区二区三区www | 久久精品99国产精品日本 | 国产精品久久久久一区二区三区 | 在线免费视频你懂的 | 国产精品久久久久久麻豆一区 | 欧美一级小视频 | 五月天九九 | 国产精品一区二区在线观看 | 超碰在线人人97 | 日韩视频免费观看高清 | 国产69久久久欧美一级 | 国产欧美日韩精品一区二区免费 | 国产精品粉嫩 | 91一区啪爱嗯打偷拍欧美 | www.久草.com| 91九色蝌蚪视频在线 | 中文字幕日韩无 | av免费电影在线观看 | 在线观看的黄色 | 色综合色综合色综合 | 中文字幕欧美三区 | 97人人澡人人添人人爽超碰 | 超碰在线最新网址 | www.精选视频.com | 三三级黄色片之日韩 | 国产 日韩 欧美 中文 在线播放 | www操操操 | 午夜色性片| 激情九九| 日本公妇在线观看高清 | 在线免费视频 你懂得 | 国产一区久久久 | 欧美a级成人淫片免费看 | 日韩系列| 九九色在线 | 91在线文字幕 | 日韩网页 | 天天操夜夜看 | 日韩中文免费视频 | 一区二区 不卡 | 国色天香在线观看 | 黄污网站在线 | 欧美 亚洲 另类 激情 另类 | 手机成人在线电影 | 国产一区二区三区午夜 | 99久久婷婷国产 | 亚洲精品高清在线 | 青草草在线 | 色五月色开心色婷婷色丁香 | 日韩毛片在线免费观看 | a亚洲视频 | 97色狠狠| 99视频在线精品国自产拍免费观看 | 国产一区二区免费 | 久久伊人操 | 免费h精品视频在线播放 | 亚洲国产精品成人va在线观看 | 综合久久婷婷 | avhd高清在线谜片 | www.com操| 欧美成人黄色 | 在线观看 国产 | 日韩精品不卡在线观看 | 国内丰满少妇猛烈精品播放 | 色操插 | 欧美精品视 | 91av视频网 | 综合激情伊人 | 色天天中文 | 精品国产人成亚洲区 | 美女黄频在线观看 | 国产精品a级 | 99婷婷狠狠成为人免费视频 | 国产精品入口传媒 | 国产精品综合久久久 | 五月婷婷亚洲 | 久草综合在线观看 | 欧美国产一区二区 | 99久久99久久精品国产片果冰 | 色综合国产 | 久久久激情网 | 国产在线视频在线观看 | 国产成人1区 | 超碰99在线 | 福利视频区 | 99精品视频一区 | 狠狠色丁香久久婷婷综合五月 | 夜色成人网 | 亚洲色图激情文学 | 99在线视频精品 | 久久精品久久久久久久 | 欧美日韩观看 | 亚洲精品久久久久中文字幕二区 | 亚洲午夜精品久久久 | 免费看片亚洲 | 亚洲精品国偷拍自产在线观看蜜桃 | 成人影视片 | 久久久久久99精品 | 超碰在线98 | 日韩一区二区在线免费观看 | 成人一级影视 | 青春草视频在线播放 | 婷婷社区五月天 | 精品国产视频在线 | 日本一区二区三区免费观看 | 日韩精品一区在线播放 | 久色免费视频 | 国产中文在线观看 | 中文字幕色网站 | 国产成人精品一区二区三区免费 | 在线观看中文字幕av | 国产精品h在线观看 | 四虎成人精品在永久免费 | 婷婷四房综合激情五月 | 亚洲不卡在线 | 亚洲 欧美 精品 | 日韩艹 | 久久视频精品在线 | 麻豆精品视频在线 | 亚洲婷婷伊人 | 去看片 | 亚洲视频一区二区三区在线观看 | 中文字幕一区二区三区在线播放 | 亚洲资源一区 | 久久久99精品免费观看乱色 | 一本色道久久综合亚洲二区三区 | 婷五月激情 | 精品一区二区综合 | 久久视频这里只有精品 | 久久黄色片 | 热久久国产 | 国产精品视频地址 | 成人av免费在线看 | 中文字幕资源在线观看 | 日韩免费视频线观看 | 美女视频黄的免费的 | 亚州性色| 亚洲韩国一区二区三区 | 日韩mv欧美mv国产精品 | 热99在线视频 | 国产精品久久久久久a | 成人av地址| av导航福利 | 在线观看成人网 | 麻豆你懂的| 色播激情五月 | 久草手机视频 | 五月婷婷久久丁香 | 国产精品2019 | 色婷婷激情电影 | 中文字幕免费久久 | 免费在线观看国产精品 | 久久国产精品一区二区三区四区 | 毛片888 | 国产二区视频在线 | 午夜精品电影一区二区在线 | 日韩在线电影一区 | 99久久精品国产系列 | 成人午夜电影在线观看 | 国产二区视频在线 | av在线中文 | 天天操天天射天天 | 五月天六月色 | 97精品超碰一区二区三区 | 成人黄色电影在线观看 | 日韩激情久久 | av在线免费观看网站 | 天堂中文在线视频 | 久草在线视频看看 | 日韩在线色 | 人人爽夜夜爽 | 欧美激情视频一区 | 免费av网址在线观看 | 精品专区一区二区 | 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 色五月成人 | 色婷婷影视 | 九九久久影院 | 不卡视频一区二区三区 | 久久在线视频精品 | 亚洲国产日韩一区 | 激情电影在线观看 | 一二三精品视频 | 456成人精品影院 | 高清精品久久 | 国产高清中文字幕 | 日韩在线观看高清 | 国产精品久久久久久久午夜 | 亚洲欧美日韩一区二区三区在线观看 | 色视频网站在线 | 免费无遮挡动漫网站 | 夜夜躁日日躁狠狠躁 | 日韩视频一区二区三区 | 国产在线综合视频 | 国产一区二区在线观看免费 | 午夜视频日本 | 天堂av免费观看 | 91中文视频| 婷婷免费在线视频 | 一区二区三区免费在线播放 | 激情自拍av| av国产网站 | 999一区二区三区 | 午夜久久久久久久 | 天天天色综合a | 久久精品视频在线观看 | 欧美国产亚洲精品久久久8v | 99在线免费视频观看 | 午夜的福利 | 日韩1级片 | 亚洲毛片在线观看. | 日韩av电影手机在线观看 | 免费亚洲成人 | 久久久www成人免费精品张筱雨 | 亚洲免费成人av电影 | 九草视频在线 | 国产婷婷精品 | 国产一级久久 | 久久视频在线观看 | 国产日韩欧美在线播放 | 精品国产美女在线 | 操操操日日 | 91av蜜桃| 久久精品国产久精国产 | 国产96在线观看 | 亚洲免费黄色 | 久久婷婷一区二区三区 | 国产美女在线观看 | 国产午夜免费视频 | 欧美精品九九 | 最新午夜 | 91成人天堂久久成人 | 国产中文字幕三区 | 日韩视 | 91免费看黄色 | 伊人中文网 | 欧美激情视频久久 | 日本精品中文字幕在线观看 | 日韩黄色中文字幕 | 精品一区三区 | 亚洲电影一区二区 | 欧美日韩精品在线一区二区 | 亚洲成人免费 | 日本久久久久 | 国产精品久久99精品毛片三a | 久久经典国产 | 伊人色综合久久天天 | av青草| 久久国产精品久久精品 | 正在播放国产91 | 亚洲黄色片一级 | 亚洲激情一区二区三区 | 天天插综合| 亚洲手机天堂 | 国产麻豆精品免费视频 | av午夜电影 | 91尤物国产尤物福利在线播放 | 国产系列 在线观看 | 国产精品成人自产拍在线观看 | www免费网站在线观看 | 日韩在线视频播放 | 亚洲国产人午在线一二区 | 91在线中文字幕 | 久久精品免费播放 | 97人人人人 | 国产一区二区在线观看视频 | 亚洲第一中文字幕 | 精品在线观看免费 | 亚洲国产中文字幕在线视频综合 | 精品毛片久久久久久 | 九九99视频 | 国产色拍拍拍拍在线精品 | 久久人91精品久久久久久不卡 | 久久免费久久 | 99热这里只有精品免费 | 99久久99久久精品国产片 | 日本午夜在线观看 | 免费网站黄色 | 国产一区二区在线免费 | 亚洲国产高清在线 | 国产亚洲精品久久久久5区 成人h电影在线观看 | 日韩一三区 | 久久免费视频99 | 国产中文字幕视频 | 91资源在线视频 | 国产中文字幕在线免费观看 | 成人不用播放器 | 天天操操操操操操 | 天天干夜夜擦 | 日本精品一 | 久久亚洲热 | 久久免费电影 | 夜夜骑日日 | 丁香六月五月婷婷 | 手机在线中文字幕 | 2000xxx影视| 91精品国产综合久久久久久久 | 九九久久久 | 三级动态视频在线观看 | 96精品高清视频在线观看软件特色 | 91探花国产综合在线精品 | 另类五月激情 | 91丨九色丨首页 | 日韩中文字幕国产精品 | 91亚洲狠狠婷婷综合久久久 | 精品美女国产在线 | 亚洲综合在线五月天 | av一级网站| 九九免费精品视频在线观看 | 色综合天天综合 | 国产免费高清 | www狠狠| 中文字幕精品久久 | 91色视频 | 日日夜夜天天射 | 粉嫩av一区二区三区四区五区 | 黄色av电影网 | 国产精品手机在线 | 91日韩精品视频 | 99国产在线观看 | 黄色av大片| a级国产乱理论片在线观看 特级毛片在线观看 | 四虎成人精品永久免费av | 在线 成人| 中文字幕在线观看av | 91 中文字幕 | 成人在线播放免费观看 | 91精品伦理| 日韩在线观看视频一区二区三区 | 国产精品久久久久久一区二区三区 | 欧美日韩国产页 | 911国产 | 在线黄色av | 日本视频高清 | 欧美精品一区二区在线播放 | 欧美激情综合五月色丁香 | 国产三级午夜理伦三级 | 天天想夜夜操 | 亚洲一区二区高潮无套美女 | 国产福利一区在线观看 | 免费久久久久久久 | 国产精品福利在线观看 | 国产中文字幕在线视频 | 一区二区三区在线观看免费 | 天天综合婷婷 | 精品一区精品二区高清 | 中文字幕激情 | 99视频国产精品免费观看 | 国产麻豆电影在线观看 | 天天夜夜亚洲 | 91麻豆看国产在线紧急地址 | 欧美日韩不卡一区二区三区 | 亚洲经典视频在线观看 | 国产麻豆电影在线观看 | 免费色视频网址 | 亚洲国产成人久久综合 | 看污网站 | 日韩在线不卡av | 久久久网 | 久久刺激视频 | 免费观看午夜视频 | 日日干干夜夜 | 91视频麻豆 | 日本高清dvd | 中文字幕资源在线观看 | 中文字幕在线观看日本 | 日本性久久| 五月婷婷免费 | 日韩高清精品免费观看 | 久久激情视频免费观看 | 欧美日韩激情视频8区 | 天天操天天添 | 亚洲欧美日韩国产一区二区 | 中文字幕文字幕一区二区 | 一区二区国产精品 | 久久久精品国产一区二区三区 | 中文字幕在线播放av | 国产精品美女久久久网av | 精品亚洲成人 | 成人精品国产 | 日韩免费视频观看 | 色网站黄 | 999久久| 91最新地址永久入口 | 麻豆视频成人 | 6699私人影院| 国产精品久久久久久久久久久久午夜 | 欧美国产日韩久久 | 欧美日韩视频精品 | 午夜久久网站 | 久草爱视频 | 97超碰人人网 | 一区二区电影网 | 成人性生交视频 | 日韩视频在线播放 | 亚洲精品综合一二三区在线观看 | 日韩精品中文字幕在线不卡尤物 | 亚洲一级片在线看 | 91免费高清观看 | 天天色天天射天天综合网 | 免费h精品视频在线播放 | www.久久久精品 | 在线观看国产日韩 | 一区av在线播放 | 精品在线观看一区二区三区 | 涩涩成人在线 | 欧美a视频在线观看 | 中文字幕在线观看国产 | 亚洲最大成人免费网站 | 91中文字幕在线观看 | 成人黄性视频 | 国产精品18久久久久久不卡孕妇 | 国产视频九色蝌蚪 | 永久中文字幕 | 日韩av影视 | 国产亚洲精品久久久久5区 成人h电影在线观看 | 射久久久 | 伊人影院得得 | 午夜18视频在线观看 | 成人午夜剧场在线观看 | 少妇精品久久久一区二区免费 | 99热这里有| 韩国av免费看 | 亚洲精品字幕在线 | 免费看的黄色片 | av中文字幕电影 | 美女激情影院 | 成人精品视频久久久久 | 在线www色 | 国际精品久久久 | 99这里只有| 在线a视频| 狠狠精品 | 久久久久久久99精品免费观看 | 亚洲午夜久久久久 | 国产丝袜在线 | 狠狠色噜噜狠狠 | 91视频91色 | 亚洲精品福利在线观看 | 久久久福利影院 | 天天干天天操天天操 | 麻豆视频国产精品 | 国产一区观看 | 国产欧美中文字幕 | 日韩黄色大片在线观看 | 国产福利小视频在线 | 中文字幕影视 | 日韩在线色视频 | 狠狠的干狠狠的操 | 一区二区三区在线免费播放 | 免费色黄 | 99九九免费视频 | 日本mv大片欧洲mv大片 | 一本一道久久a久久精品 | 99久久综合精品五月天 | 97碰碰视频| 在线免费观看黄色大片 | av视屏在线播放 | 免费观看全黄做爰大片国产 | 精品专区一区二区 | 久久亚洲综合国产精品99麻豆的功能介绍 | 欧美日比视频 | 日韩影片在线观看 | 欧美天天综合 | www.日韩免费 | 激情欧美一区二区免费视频 | 日韩三级中文字幕 | 中文在线天堂资源 | 国产丝袜 | 久久久精品视频网站 | 国产亚洲视频中文字幕视频 | 一区二区不卡在线观看 | 亚洲精品综合一二三区在线观看 | 亚洲精品美女在线观看 | 亚洲精品美女免费 | 欧美精品久久久久久久免费 | 美女精品在线观看 | 国产精品久久一区二区无卡 | 四虎成人精品永久免费av | 亚洲精品福利在线观看 | 91精品亚洲影视在线观看 | 久久免费视频7 | 国产精品成人一区二区三区 | 国产精品一区欧美 | av片在线观看免费 | 2018亚洲男人天堂 | 欧美成人亚洲成人 | 亚洲欧洲国产精品 | 亚洲闷骚少妇在线观看网站 | 成人久久久精品国产乱码一区二区 | 精品国产亚洲日本 | 在线观看视频黄色 | 在线精品国产 | 日韩免费视频一区二区 | 国产成本人视频在线观看 | 日本成址在线观看 | 国产成人免费在线观看 | 久久色网站| 亚洲欧美视频网站 | 久久色在线播放 | 亚洲h色精品| a视频免费 | 狠狠综合久久 | 911久久香蕉国产线看观看 | 99视频+国产日韩欧美 | 成片人卡1卡2卡3手机免费看 | 日本成人中文字幕在线观看 | 日韩av在线网站 | 五月香视频在线观看 | 最新国产中文字幕 | 色狠狠久久av五月综合 | 久久高清片 | 日本激情视频中文字幕 | 国产黄色片在线免费观看 | 黄在线| 精品欧美小视频在线观看 | 91在线在线观看 | 日韩xxxbbb | 天天操天天色天天 | 中文字幕在线看片 | 国产成人精品在线 | 99re中文字幕| 亚洲成av人片在线观看香蕉 | 欧美视频在线观看免费网址 | 综合视频在线 | 免费福利视频导航 | 午夜精品一二三区 | av电影一区二区 | 九九视频网站 | 精品特级毛片 | 黄污网站在线 | 夜添久久精品亚洲国产精品 | 日韩色视频在线观看 | 国产精品二区三区 | 久久久久美女 | 在线观看免费国产小视频 | 日韩高清免费在线观看 | 四虎永久免费网站 | 99精品国产兔费观看久久99 | 丁香在线视频 | 日韩高清一区 | 久热电影| 免费av影视 | 日日日干 | 国产裸体视频bbbbb | 亚洲japanese制服美女 | 福利一区二区三区四区 | 在线有码中文 | 精品久久久久久亚洲综合网 | 美女天天操| 亚洲黄色大片 | 97视频在线免费观看 | 97av视频| 九九爱免费视频 | 国产日本在线观看 | 一区 二区电影免费在线观看 | 日韩在线观看高清 | 最新日韩精品 | 九九九免费视频 | 国产精品一区二区免费在线观看 | 国产成人无码AⅤ片在线观 日韩av不卡在线 | 91精品免费 | 韩国av免费观看 | 免费日韩一区二区三区 | 亚洲人成网站精品片在线观看 | 中文字幕在线观看三区 | 久久国产精品久久国产精品 | 国产一区91 | 天堂av免费观看 | 夜色.com| 99久久这里有精品 | 亚洲在线视频免费观看 | 亚洲va男人天堂 | 日日碰狠狠躁久久躁综合网 | 久久手机看片 | 免费看网站在线 | 最新av免费在线 | 热久久99这里有精品 | 日韩精品久久久久久 | 国产精品av久久久久久无 | 久久99国产精品免费网站 | 久久精品综合视频 | 日韩精品不卡 | 精品国产一区二区三区男人吃奶 | 欧美超碰在线 | 五月激情六月丁香 | 亚洲v精品 | 成人午夜影院 | 高清视频一区二区三区 | 日日操网| 亚洲人xxx| 天天干,天天操,天天射 | 亚洲精品免费看 | 九九色综合 | 99久久久国产精品免费观看 | 久久久久久国产精品亚洲78 | 在线蜜桃视频 | 婷婷激情综合五月天 | 中文在线 | 成人欧美一区二区三区黑人麻豆 | 成年人免费在线 | 国产亚洲成av人片在线观看桃 | 国产精品18久久久久久vr | 亚洲精品免费播放 | 日韩av视屏在线观看 | 中文字幕欧美日韩va免费视频 | 午夜视频亚洲 | 麻豆影视在线播放 | 成人免费xxxxxx视频 | 国产午夜精品视频 | 国产成人精品一区一区一区 | 国产亚洲精品成人av久久影院 | 亚洲高清视频在线 | 欧美一区二区三区激情视频 | 亚洲欧美国产精品久久久久 | 97在线观看免费视频 | 成人黄色av网站 | 成人黄色片免费 | 亚洲成人免费在线观看 | 粉嫩高清一区二区三区 | 中文字幕一区二区三区精华液 | 97福利在线| 激情av网址 | 中文在线| 欧美日韩国产页 | 国产精品精品久久久久久 | 91九色蝌蚪视频网站 | 玖玖视频网 | 亚洲va综合va国产va中文 | 成x99人av在线www | 亚洲成a人片77777潘金莲 | 最新国产精品拍自在线播放 | 国产成人精品一区二区三区福利 | 99r在线播放 | 成年人免费在线观看网站 | 成人91在线| 色综合天天视频在线观看 | 久久婷婷精品 | 免费av小说 | 麻豆一区在线观看 | 日韩aa视频| 丁香5月婷婷 | 丝袜美腿在线播放 | 蜜臀av性久久久久蜜臀av | 在线观看播放av | 亚洲精品在线一区二区 | 最近中文字幕免费视频 | 亚洲精品国产精品国自产在线 | 国产精品一区二区三区在线看 | 久久久免费看片 | 在线黄av | 亚洲午夜精品一区 | 成片人卡1卡2卡3手机免费看 | av在线电影网站 | 国产主播大尺度精品福利免费 | 亚洲欧美日韩在线看 | 久草在线高清视频 | 丁香高清视频在线看看 | 国产伦理精品一区二区 | 97超碰色 | 午夜视频黄 | 一本一本久久aa综合精品 |