Example #1
0
void FinishFrameSVC( NAL *Nal, SPS *Sps, PPS *Pps, LIST_MMO *Current_pic, SLICE *Slice, int EndOfSlice, 
					DATA *TabBlbock, RESIDU *Residu, MMO *Mmo)
{


	if (!EndOfSlice && Mmo -> MemoryAllocation){
		LAYER_MMO *LayerMmo = &(Mmo->LayerMMO[Nal->LayerId]);
		DEP_MMO* dep_mmo = LayerMmo->dep_mmo;
		if ( Nal -> PicToDisplay && Nal->bFinishLayerRepresent){
			const int PicWidthInPix = (Sps -> pic_width_in_mbs + 2) << 4;
			const int PicHeightInPix = (Sps -> pic_height_in_map_units ) << 4;
			short *mvL0 = Current_pic->mv_memory_l0;
			short *mvL1 = Current_pic->mv_memory_l1;
			short *refL0 = Current_pic->ref_memory_l0;
			short *refL1 = Current_pic->ref_memory_l1;
			unsigned char *Y = Current_pic->picture_memory_y;
			unsigned char *U = Current_pic->picture_memory_u;
			unsigned char *V = Current_pic->picture_memory_v;
			//Deblocking filter
			if (!Nal -> DqId){
				Loop_filter_avc(Sps, Pps, Slice, Current_pic, LayerMmo->mb_slice_table, TabBlbock, mvL0, mvL1, refL0, refL1, Residu, Y, U, V);
			}else {
				Loop_filter_svc(Nal, Sps, Pps, Slice, Current_pic, LayerMmo->mb_slice_table, mvL0, mvL1, refL0, refL1, Residu, Y, U, V);
			}
			//Padding for motion interpolation
			ImageSetEdges(Y, U, V, PicWidthInPix, PicHeightInPix);
			logStr("add to poc buffer, poc:%d, pic number:%d\tmemory:%x\n",Current_pic->poc,
					Mmo->nb_img_display - Mmo -> num_free_poc_address,Current_pic->picture_memory_y);
			StorePicture(&(Mmo->poc_params[Mmo->nb_img_display - Mmo -> num_free_poc_address]),
					Current_pic,Sps,Nal->DqIdToDisplay);
			Mmo->num_free_poc_address--;
		}
	}
}
void CZXingBarcodeReaderAppView::MceoCapturedDataReady( TDesC8* aData )
	{
	SetTitle(_L("Saving picture..."));

	delete iData; iData = NULL;
	iData = aData->Alloc();

	if (iCameraWrapper)
		iCameraWrapper->ReleaseImageBuffer();

	TRAP_IGNORE(iAppUi->UseOptionsBackCbaL());

	StorePicture(iData);
	}
Example #3
0
void display_order (SPS *sps_id, LIST_MMO *Current_pic, DISPLAY_M* display_memory, int *x_size, int *y_size, 
					int *Crop, int *img_to_display, MMO *mmo)
{



	
	int j;

	//Store the current picture in the reordoring buffer
	StorePicture(&mmo -> poc_params[mmo -> nb_img_display - mmo -> num_free_poc_address], Current_pic, sps_id, 0);
	mmo -> num_free_poc_address --;
	mmo -> LayerMMO [0] . num_decoded_frame ++;
	
	//Display the first picture, and wait after for enough renderer
 	if ( (mmo ->  LayerMMO [0] . num_decoded_frame >= mmo -> nb_img_display) || (mmo -> LayerMMO [0] . num_decoded_frame == 1)){
		int BestPos;

		//Find the best picture with the correct poc
		POC_PARAMS *Frame = FindBestFrame(mmo, mmo -> poc_params, &BestPos, MIN_POC);
		mmo -> num_free_poc_address ++;

		//Remove from short or long ref the current picture
		CurrentDisplay(mmo, &mmo -> LayerMMO[0], Frame -> Picture, display_memory);
		//printf("%d \n", Frame -> Picture -> poc);

		*img_to_display = 1;
		*x_size = Frame -> x_size;
		*y_size = Frame -> y_size;
		*Crop = Frame -> Crop;

		for (j = BestPos; j < mmo -> nb_img_display - mmo -> num_free_poc_address; j++){
			memmove(&mmo -> poc_params[j], &mmo -> poc_params[j + 1],  1 * sizeof(POC_PARAMS));
		}
	}else{
		*img_to_display = 0;
		*x_size = (sps_id -> pic_width_in_mbs) << 4;
		*y_size = (sps_id -> pic_height_in_map_units) << 4;
	}
}