




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
總覺(jué)得晚上好像沒(méi)有有關(guān)Mpegl數(shù)據(jù)流具體格式的東西,所以索性我做些貢獻(xiàn)吧。這篇文檔里面詳細(xì)的敘述了Mpegl規(guī)范的比特流結(jié)構(gòu)目錄目錄MPEG-1流比特層次結(jié)構(gòu)分析總結(jié)1.簡(jiǎn)要介紹MpegMpeg-1數(shù)據(jù)流分析2.1視頻序列層(VideoStream)2.2畫(huà)面組層(GOP)畫(huà)面層(Pictures)片層(Slice)宏塊層(Macroblock)塊層(Block)加密位置的思考附錄MPEG-1流比特層次結(jié)構(gòu)分析總結(jié)1.簡(jiǎn)要介紹MpegMpeg是MotionPictureExpertGroup的縮寫(xiě)。活動(dòng)圖像專(zhuān)家組是在1988年由ISO和IEC聯(lián)合成立的專(zhuān)家組,負(fù)責(zé)開(kāi)發(fā)電視圖像數(shù)據(jù)和聲音數(shù)據(jù)的編碼,解碼和它們的同步等標(biāo)準(zhǔn)。到目前為止已經(jīng)開(kāi)發(fā)和正在開(kāi)發(fā)的MPEG標(biāo)準(zhǔn)有很多,主要包括Mpeg-1,Mpeg-2,Mpeg-4,和Mpeg-7.其中的Mpeg-1處理的是標(biāo)準(zhǔn)圖像交換格式(standardinterchangeformat,SIF)或者稱(chēng)為源輸入格式(SourceInputFormat,SIF)的電視,將模擬的圖像信息,通過(guò)編碼成為數(shù)字圖像信息,原始輸入可以是NTSC制式352pixels*240lines*30frames/second,PAL制352pixels*288lines*25frames/second,壓縮后的數(shù)字圖像信息的速率為1.5Mb/s.這個(gè)標(biāo)注是1992年正是的發(fā)布的,是針對(duì)當(dāng)時(shí)具有這種數(shù)據(jù)傳輸速率的CD-ROM和網(wǎng)絡(luò)而開(kāi)發(fā)的,用于在CD-ROM上存儲(chǔ)數(shù)字影視和在網(wǎng)絡(luò)上傳輸數(shù)字影視。MPEG-1的標(biāo)準(zhǔn)號(hào)為ISO/IEC11172,標(biāo)準(zhǔn)名:“信息技術(shù)——用于數(shù)據(jù)速率大約高達(dá)1.5Mb/s的數(shù)字存儲(chǔ)替的電視圖像和伴音編碼”本文主要是對(duì)Mpeg-1Video數(shù)據(jù)流的結(jié)構(gòu)進(jìn)行分析,并將怎樣得到Mpeg-1流中的數(shù)據(jù)部分進(jìn)行的闡述。ISO/IEC11172-22.Mpeg-1數(shù)據(jù)流分析編碼后的視頻序列是一個(gè)如同計(jì)算機(jī)網(wǎng)絡(luò)的OSI模型下的數(shù)據(jù)序列一樣,數(shù)據(jù)被分成很多層的概念。視頻序列層一畫(huà)面組層一畫(huà)面層一片層一宏塊層一塊層層次的關(guān)系很明顯,越往后越是底層,越接近實(shí)際的數(shù)據(jù)。2.1視頻序列層(VideoStream)
視頻序列是以一個(gè)序列標(biāo)題開(kāi)始,之后可以跟著一個(gè)或者多個(gè)畫(huà)面組。最后以Sequence_end_code結(jié)束。緊挨著每一個(gè)畫(huà)面組之前可以有一個(gè)序列標(biāo)題。也就是說(shuō)每個(gè)畫(huà)面組,都可以有一個(gè)自己的序列標(biāo)題。序列標(biāo)題是一個(gè)以sequence_header_code開(kāi)始,后跟著一系列數(shù)據(jù)元素的結(jié)構(gòu)。是視頻流中用來(lái)解碼的重要的參數(shù)之一。其中定義了量化矩陣(load_intra_quantizer_matrix和load_non_intra_quantizer_matrix以及可選的intra_quantizer_matrix和non_intra_quantizer_matrix)以及其它的一些重要的數(shù)據(jù)元素,其中量化矩陣是可以在視頻流中重復(fù)的量化矩陣中變化的,并且在每次變化后,量化矩陣重新定義。其它的元素必須與第一個(gè)序列標(biāo)題中的值相同。整個(gè)視頻序列的結(jié)構(gòu)可以用下面的代碼表示:Video_Stream(unsignedinth_size;s.*/unsignedintv_size;s.*/unsignedintmb_height;TOC\o"1-5"\h\zks. */unsignedintmb_width;cks. */unsignedcharaspect_ratio;io. */unsignedcharpicture_rate;te. */unsignedinte.unsignedinte.*/BOOLEANconst_param_flag;rflag.*/bit_rate;*/
vbv_buffer_size;bit_rate;*/
vbv_buffer_size;xforintracodedframes. */unsignedcharnon_intra_quant_matrix[8][8];xfornonintracodedframes.*/char*ext_data;TOC\o"1-5"\h\za. */char*user_data;a. */GoPgroup;ct.*/Pictpicture;e. *//*Horiz.sizeinpixel/*Vert.sizeinpixel/*Vert.sizeinmbloc/*Horiz.sizeinmblo/*Horiz.sizeinpixel/*Vert.sizeinpixel/*Vert.sizeinmbloc/*Horiz.sizeinmblo/*Codeforaspectrat/*Codeforpicturera/*Bitrat/*Minimumbuffersiz/*Contrainedparamete/*Quantizationmatri/*Quanitizationmatri/*Extensiondat/*Userdat/*Currentgroupofpi/*CurrentpicturSliceslice;TOC\o"1-5"\h\ze. */Macroblockmblock;k. */Blockblock;k. */intstate;g. */intbit_offset;m.*/unsignedint*buffer;einbuffer. */intbuf_length;gbuffer.*/unsignedint*buf_start;tart.*/intmax_buf_length;TOC\o"1-5"\h\zr. */PictImage*past;me. */PictImage*future;rame. */PictImage*current;e. */PictImage*ring[RING_BUF_SIZE];es.*/}Video_Stream;/*Currentmacrobloc/*Currentbloc/*Stateofdecodin/*Currentmacrobloc/*Currentbloc/*Stateofdecodin/*Bitoffsetinstrea/*Pointertonextbyt/*Lengthofremainin/*Pointertobuffers/*Maxlenghtofbuffe/*Pastpredictivefra/*Futurepredictivef/*Currentfram/*RingbufferofframSEQ_START_CODE0x000001b3;/*常量,作用使用來(lái)定位視頻序列的序列頭*/unsignedinth_size;s.*/unsignedintv_size;s.*/unsignedintmb_height;TOC\o"1-5"\h\zks. */unsignedintmb_width;cks. */unsignedcharaspect_ratio;io. */unsignedcharpicture_rate;/*Horiz.sizeinpixel/*Vert.sizeinpixel/*Vert.sizeinmbloc/*Horiz.sizeinpixel/*Vert.sizeinpixel/*Vert.sizeinmbloc/*Horiz.sizeinmblo/*Codeforaspectrat/*Codeforpictureraunsignedintbit_rate; /*Bitrate. */unsignedintvbv_buffer_size; /*Minimumbuffersize.*/BOOLEANconst_param_flag; /*Contrainedparameterflag.*/unsignedcharload_intra_quantizer_matrix;unsignedcharintra_quant_matrix[8][8];/*Quantizationmatrixforintracodedframes. 這個(gè)結(jié)構(gòu)是可選的,要看load_intra_quantizer_matrix的值,為真則有這個(gè)部分,否則沒(méi)有,因?yàn)閕ntra_quant_matrix是量化表的值,而Sequence_header結(jié)構(gòu)在視頻序列中是可重復(fù)的,即在每個(gè)畫(huà)面組之前都有可能再次給出一個(gè)sequence_header,并且可以在新的sequence_header中重新定義量化表*/unsignedcharload_non_intra_quantizer_matrix;TOC\o"1-5"\h\zunsignedcharnon_intra_quant_matrix[8][8];/*Quanitizationmatrixfornonintracodedframes.也是可選。愿意于intra_quant_matrix可選的原因相同。當(dāng)load_non_intra_quant_matrix的值為真的時(shí)候需要定義。 */char*ext_data; /*Extensiondata. */char*user_data; /*Userdata. */}由上面的分析,可以看出來(lái)的是:video_sequence()(next_start_code()do(sequence_header();do(group_of_pictures();畫(huà)面組}while(nextbits()==GROUP_START_CODE)}while(nextbits()==SEQUENCE_HEADER_CODE)SEQUENCE_END_CODE};正是由于視頻序列中存在很多開(kāi)始碼,或者稱(chēng)之為定位碼、同步碼。用來(lái)告訴解碼器目前數(shù)據(jù)的區(qū)域信息,所以解碼器才可以正確的處理各個(gè)數(shù)據(jù)區(qū)的數(shù)據(jù),下面就是視頻序列中的開(kāi)始碼的羅列:#defineSEQ_END_CODE0x000001b7#defineSEQ_START_CODE0x000001b3#defineGOP_START_CODE0x000001b8#definePICTURE_START_CODE0x00000100
#defineSLICE_MIN_START_CODE0x00000101#defineSLICE_MAX_START_CODE0x000001af#defineEXT_START_CODE0x000001b5#defineUSERSTARTCODE0x000001b2這些開(kāi)始碼都是一些特殊的32bits的比特序列,在視頻碼流中不會(huì)出現(xiàn)的。他們的起著標(biāo)志的作用,具體可以從名稱(chēng)上面看出來(lái)。其中EXT_START_CODE和USER_START_CODE在每個(gè)層里面都會(huì)出現(xiàn),用來(lái)標(biāo)志擴(kuò)展數(shù)據(jù)區(qū)和用戶(hù)數(shù)據(jù)區(qū),用來(lái)添加任意的數(shù)據(jù),直到下一個(gè)開(kāi)始碼結(jié)束。2.2畫(huà)面組層2.2畫(huà)面組層(GOP)在軟件xmplay1.1中的定義typedefstructGoP(BOOLEANdrop_flag;rame.*/unsignedinttc_hours;de.*/unsignedinttc_minutes;ecode.*/unsignedinttc_seconds;ecode.*/unsignedinttc_pictures;ode.*/BOOLEANclosed_gop;/*Flagindicatingdroppedf/*Hourcomponentoftimeco/*Minutecomponentoftim/*Secondcomponentoftim/*Picturecounteroftimec/*Indicatesnopred.vectorstopreviousgroupofpictures.*/BOOLEANbroken_link; /*Bframeunabletobedecoded.*/char*ext_data; /*Extensiondata. */char*user_data; /*Userdata. */}GoP;當(dāng)然每個(gè)畫(huà)面組層都是開(kāi)始與標(biāo)志碼:GOP_START_CODE該層次語(yǔ)法上的定義是group_of_pictures(GOP_START_CODETime_code;tc_hours,tc_minutes,tc_seconds,tc_picturesClosed_gop;Broken_link;Next_start_code;If(nextbits==extension_start_code)(Extension_start_code;While(nextbits()==”000000000000000000000001”){Group_extension_data;}next_start_code()}if(nextbits==user_data_start_code){user_data_start_codewhile(nextbits()!=’000000000000000000000001’){user_data;}next_start_code()}do(picture()}while(nextbits==picture_start_code)}Mpeg流最終顯示出來(lái)是一系列的畫(huà)面,而畫(huà)面組是mpeg流中可以獨(dú)立編碼的最小的單位,每個(gè)畫(huà)面組由一個(gè)標(biāo)題和一系列畫(huà)面組成。GOP標(biāo)題包含了時(shí)間和編輯的信息。Mpeg畫(huà)面組中必須至少有一個(gè)I幀畫(huà)面,可以有數(shù)目可變的B幀和P幀畫(huà)面,也可以沒(méi)有P和B幀。畫(huà)面組的第一幅編碼畫(huà)面是I畫(huà)面,該畫(huà)面之后跟隨著任意數(shù)目的【或P畫(huà)面,每對(duì)I、P畫(huà)面之間可以插入任意數(shù)目的B畫(huà)面。畫(huà)面組是畫(huà)面的集合,每幅畫(huà)面按照顯示的順序相鄰。畫(huà)面組中的畫(huà)面有兩種排列順序:按比特流順序必須以I幀開(kāi)頭,后面可按任何的次序,跟上任意數(shù)目的I,P或B畫(huà)面。按顯示順序必須以I或B畫(huà)面打頭,且以I或P畫(huà)面結(jié)束,最小的畫(huà)面組由一個(gè)I畫(huà)面組成。從編碼角度,可以精確的陳述的是,畫(huà)面組以一個(gè)畫(huà)面組標(biāo)題開(kāi)始,以最先出現(xiàn)的下一個(gè)畫(huà)面組標(biāo)題或者下一個(gè)序列標(biāo)題或者序列結(jié)束碼結(jié)束。Mepg流中的標(biāo)志碼也就是開(kāi)始碼,對(duì)正確的分割和識(shí)別碼流的成分起到了至關(guān)重要的作用。畫(huà)面層(Pictures)畫(huà)面組層中的一幅幅畫(huà)面就是畫(huà)面層的數(shù)據(jù)了。包含了一幅畫(huà)面的所有編碼信息。一幅畫(huà)面同樣始于畫(huà)面的標(biāo)題。標(biāo)題以畫(huà)面開(kāi)始碼(PICTURE_START_CODE0x00000100)打頭。解析畫(huà)面單元的語(yǔ)法結(jié)構(gòu):picture()(picture_start_codetemprol_reference /*時(shí)序編號(hào),通常一組畫(huà)面的編號(hào)都在1024以?xún)?nèi),如果超過(guò)那么在1025幅畫(huà)面出復(fù)位為0,重新計(jì)數(shù)。*/picture_coding_typevbv_delay/*對(duì)于固定比特率的視頻流,vbv_delay用與解碼過(guò)程開(kāi)始和隨機(jī)存取之后,以保證在第一幅畫(huà)面被顯示之前,解碼器已經(jīng)讀到正確數(shù)目的比特?cái)?shù)。*/if((picture_coding_type==2)||picture_coding_type==3){full_pel_foward_vector/*全象素前向矢量,給定前向矢量的精度,在P和B畫(huà)面的標(biāo)題中出現(xiàn)*/forward_f_code}if(picture_coding_type==3){full_pel_backward_vectorback_f_code}while(nextbits()==’1’){extra_bit_pictureextra_information_picture}extra_bit_picturenext_start_codeif(nextbits()==extension_start_code)(extension_start_codewhile(nextbits()!=’000000000000000000000001’){picture_extension_data}next_start_code()}if(nextbits()==user_data_start_code)(user_data_start_codewhile(nextbits()!=’000000000000000000000001’){user_data}next_start_code()}do(slice()}while(nextbits()==slice_start_code)}整個(gè)畫(huà)面單元結(jié)構(gòu)是這樣的:typedefstructpict(unsignedinttemp_ref; /*Temporalreference. */
unsignedintcode_type;e:P,B,I *//*Frametypunsignedintvbv_delay;/*Bufferdelay. */BOOLEANfull_pel_forw_vector;/*Forw.vectorsspecifiedinfullpixelvaluesflag.*/unsignedintforw_r_size;/*Usedforvectordecoding. */unsignedintforw_f;/*Usedforvectordecoding. */BOOLEANfull_pel_back_vector;/*Backvectorsspecifiedinfullpixelvaluesflag.*/unsignedintback_r_size;/*Usedindecoding. */unsignedintback_f;/*Usedindecoding. */char*extra_info;/*Extrabitpictureinfo. */char*ext_data;/*Extensiondata. */char*user_data;/*Userdata. */}Pict;可以看出整個(gè)pictures層的bit流結(jié)構(gòu)中由標(biāo)題和pictures數(shù)據(jù)組成。標(biāo)題中提供了必要的畫(huà)面信息數(shù)據(jù)和運(yùn)動(dòng)矢量的信息。片層(Slice)片是任意數(shù)目宏塊組成的序列,其中宏塊必須從畫(huà)面的左上位置開(kāi)始,按照光柵掃描的方向從左到右,從上到下排列。片中至少包涵一個(gè)宏塊,片與片之間沒(méi)有重疊,也沒(méi)有間隙。片層的解析語(yǔ)法:首先給出識(shí)別出Slice層數(shù)據(jù)的頭標(biāo)slice_start_code『#defineSLICE_MIN_START_CODE0x00000101#defineSLICE_MAX_START_CODE0x000001af』slice(slice_start_code/*從中可以計(jì)算出slice_vertical_position片中第一個(gè)宏塊,以宏塊為單位的垂直位置*/quantizer_scale /*設(shè)置量化步長(zhǎng)尺寸。1一31*/
while(nextbits()==’1’){extra_bit_slice ‘1’extra_information_slice}extra_bit_scale ‘0’do(macroblock()}while(nextbits()!=’000000000000000000000000’)next_start_code()}typedefstructslice(unsignedintvert_pos;e.*/typedefstructslice(unsignedintvert_pos;e.*/unsignedintquant_scale;e. */char*extra_info;o.*/}Slice;/*Verticalpositionofslic/*Quantizationscal/*Extrabitsliceinf每個(gè)片由一個(gè)開(kāi)始碼開(kāi)始,開(kāi)始后DC系數(shù)和矢量解碼的預(yù)測(cè)值都被復(fù)位,片開(kāi)始部位的位置的水平位置由片中第一個(gè)宏塊的宏塊地址決定。這些措施使得在一幅畫(huà)面內(nèi)任何一片都可以單獨(dú)編碼而不需要前一片的信息。當(dāng)解碼是出現(xiàn)錯(cuò)誤,即可以從后繼的片重新開(kāi)始。所以,當(dāng)數(shù)據(jù)在無(wú)錯(cuò)的環(huán)境中,可以一幅畫(huà)面就作為一片,但是如果是有錯(cuò)的環(huán)境,則每行宏塊作為一片會(huì)更加合理。表2256X192畫(huà)面內(nèi)的片劃分(每行宏塊作為一個(gè)片,每個(gè)片的高度都是16pixels)1開(kāi)始1結(jié)束2開(kāi)始2結(jié)束3開(kāi)始3結(jié)束4開(kāi)始4結(jié)束5開(kāi)始5結(jié)束6開(kāi)始6結(jié)束7開(kāi)始7結(jié)束8開(kāi)始8結(jié)束9開(kāi)始9結(jié)束10開(kāi)始10結(jié)束11開(kāi)始11結(jié)束12開(kāi)始12結(jié)束13開(kāi)始13結(jié)束實(shí)際情況中片不宜太多,因?yàn)槠瑯?biāo)題,以及新片所需要盡心重新編碼花費(fèi)的開(kāi)銷(xiāo)很大。片始于片標(biāo)題,片標(biāo)題又始于片開(kāi)始碼,片開(kāi)始碼是可以在一個(gè)范圍中取得得,這個(gè)范圍就是#defineSLICE_MIN_START_CODE0x00000101#defineSLICE_MAX_START_CODE0x000001af片開(kāi)始碼得最后8為可以給出片得垂直位置,即以宏塊為單位從畫(huà)面頂部位置為1開(kāi)始算起,片中第一個(gè)宏塊的垂直位置。宏塊有一個(gè)行號(hào)可以作為它得定位數(shù)據(jù),這個(gè)行號(hào)的計(jì)算方法是:片垂直位置一1宏塊的垂直位置最大為175。片中第一個(gè)宏塊的水平位置,可以由該宏塊的地址偏移計(jì)算出來(lái),所以不需要依賴(lài)畫(huà)面內(nèi)的任何其他的宏塊的信息。宏塊層(Macroblock)宏塊是包含16pixels*16lines的亮度分量部分,以及在空間位置上對(duì)應(yīng)的兩個(gè)8pixels*8lines的色度分量部分,一個(gè)宏塊有4個(gè)亮度塊和2個(gè)色度塊。宏塊可以指源圖像或者重構(gòu)圖像的數(shù)據(jù),或者是量化后的DCT系數(shù)。宏塊中塊的順序如下:表1宏塊中塊的排列01235Y分量Cb分量Cr分量宏塊的數(shù)據(jù)分析語(yǔ)法描述:macroblock()(while(nextbits()==’00000001111’){macroblock_stuffing/*宏塊填料,為了防止下溢出,由編碼器填入的數(shù)據(jù),有它固定的11位bit格式就是’00000001111’,當(dāng)然解決下溢出的方法還有很多,編碼器可以在標(biāo)題之前就加入填料位,或者可以減小quant_scale獲得更多的編碼系數(shù)等等*/}while(nextbits()==’00000001000’){macroblock_escape/*固定模式的bit串,當(dāng)macroblock_address與previous_macroblock_address的差大于33時(shí)將用到該碼。使得后繼的macroblock_increment所表示的值加33。}macroblock_address_increment/*用于表示macroblock_address和previous_macorblock_address之間的差值。最大值為33,當(dāng)前兩者差大于33時(shí)用macroblock_escape補(bǔ)充。Macroblock_address表示的是宏塊在畫(huà)面中的絕對(duì)位置,最左上角的宏塊的macroblock_address為0,previous_macroblock_address指示片中最后一個(gè)非跳空宏塊的位置。macroblock_typeif(macroblock_motion_forward)(motion_horizontal_forward_codeif((forward_f!=1)&&(motion_horizontal_forward_code!=0))motion_horizontal_forward_rmotion_vertical_forward_codeif((forward_f!=1)&&(motion_vertical_forward_code!=0))motion_vertical_forward_r}if(macroblock_motion_backward)(motion_horizontal_backward_codeif((backward_f!=1)&&(motion_horizontal_backward_code!=0))motion_horizontal_backward_rmotion_vertical_backward_codeif((backward_f!=1)&&(motion_vertical_backward_code!=0))motion_vertical_backward_r}
if(macroblock_pattern)coded_block_pattern/*可以得到宏塊宏塊的pattern_code[i](i=0:5),從而確定該宏塊接收到的塊的種類(lèi)有哪些。*/for(i=0;i<6;i++)block(i)if(picture_coding_type==4)end_of_marcoblock}片被分為16pixels*16lines的象素宏塊。每個(gè)宏塊都有它的標(biāo)題。包含了宏塊的地址、類(lèi)型、量化器標(biāo)尺信息等等。標(biāo)題之后是該宏塊的6個(gè)塊的數(shù)據(jù)。在Xmplay代碼中給出的macrblock的定義:typedefstructmacroblock(intmb_address;TOC\o"1-5"\h\zs. */intpast_mb_addr;s. */intmotion_h_forw_code;rcode.*/unsignedintmotion_h_forw_r;s. */intmotion_v_forw_code;rcode.*/unsignedintmotion_v_forw_r;s.*/intmotion_h_back_code;rcode.*/unsignedintmotion_h_back_r;TOC\o"1-5"\h\zs. */intmotion_v_back_code;rcode. */unsignedintmotion_v_back_r;s. */unsignedintcbp;n. */BOOLEANmb_intra;g. */BOOLEANbpict_past_forw;rflag.*/BOOLEANbpict_past_back;rflag.*/intpast_intra_addr;block.*//*Macroblockaddres/*Previousmblockaddres/*Forw.horiz.motionvecto/*Macroblockaddres/*Previousmblockaddres/*Forw.horiz.motionvecto/*Usedindecodingvector/*Forw.vert.motionvecto/*Usedindecdoingevector/*Backhoriz.motionvecto/*Usedindecodingvector/*Backvert.motionvecto/*Usedindecodingvector/*Codedblockpatter/*Intracodedmblockfla/*PastBframeforw.vecto/*PastBframebackvecto/*Addroflastintracodedm/*Pastrightforw.vector.*/r.reco
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年邯鄲貨運(yùn)資格證模擬考試題
- AI算法設(shè)計(jì)與應(yīng)用操作手冊(cè)
- 食品原料來(lái)源可追溯管理系統(tǒng)開(kāi)發(fā)
- 品味古典詩(shī)詞韻味之美-高三古詩(shī)文誦讀與賞析教學(xué)教案
- 2025年新疆從業(yè)資格證500道題速記
- 江干區(qū)小學(xué)英語(yǔ)試卷
- 鎢基高比重合金競(jìng)爭(zhēng)策略分析報(bào)告
- 小學(xué)英語(yǔ)買(mǎi)試卷
- 公司承包轉(zhuǎn)讓合同范本
- 雙方變更合同范本
- 《火力發(fā)電廠水處理技術(shù)概述》課件
- 春節(jié)后復(fù)工安全培訓(xùn)課件
- 全國(guó)電子工業(yè)版初中信息技術(shù)第二冊(cè)第2單元2.1活動(dòng)3《使用云盤(pán)備份數(shù)據(jù)》教學(xué)設(shè)計(jì)
- 招標(biāo)代理服務(wù)投標(biāo)方案(技術(shù)標(biāo))
- 財(cái)務(wù)人員防騙技巧培訓(xùn)課件
- 交替?zhèn)髯g課件外研社王丹
- 2024年哈爾濱電力職業(yè)技術(shù)學(xué)院高職單招語(yǔ)文歷年參考題庫(kù)含答案解析
- 2024年金鑰匙科技知識(shí)競(jìng)賽試題及答案
- 運(yùn)用HFMEA品管工具優(yōu)化輸血全流程醫(yī)院品質(zhì)管理案例(血液科輸血科信息科醫(yī)務(wù)科護(hù)理部)
- 國(guó)企治理三會(huì)一層詳解
- 安全保證體系新
評(píng)論
0/150
提交評(píng)論