1219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard/* 2219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** Copyright 2003-2010, VisualOn, Inc. 3219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** 4219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** Licensed under the Apache License, Version 2.0 (the "License"); 5219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** you may not use this file except in compliance with the License. 6219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** You may obtain a copy of the License at 7219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** 8219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** http://www.apache.org/licenses/LICENSE-2.0 9219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** 10219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** Unless required by applicable law or agreed to in writing, software 11219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** distributed under the License is distributed on an "AS IS" BASIS, 12219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** See the License for the specific language governing permissions and 14219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** limitations under the License. 15219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard */ 16219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard 17219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard/*********************************************************************** 18219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard* File: stream.c * 19219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard* * 20219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard* Description: VOME API Buffer Operator Implement Code * 21219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard* * 22219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard************************************************************************/ 23219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard 24219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard#include "stream.h" 25219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard 26219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgardvoid voAWB_InitFrameBuffer(FrameStream *stream) 27219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard{ 28219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard stream->set_ptr = NULL; 29219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard stream->frame_ptr_bk = stream->frame_ptr; 30219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard stream->set_len = 0; 31219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard stream->framebuffer_len = 0; 32219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard stream->frame_storelen = 0; 33219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard} 34219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard 35219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgardvoid voAWB_UpdateFrameBuffer( 36219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard FrameStream *stream, 37219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard VO_MEM_OPERATOR *pMemOP 38219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ) 39219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard{ 40219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard int len; 41219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard len = MIN(Frame_Maxsize - stream->frame_storelen, stream->set_len); 42219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard pMemOP->Copy(VO_INDEX_ENC_AMRWB, stream->frame_ptr_bk + stream->frame_storelen , stream->set_ptr, len); 43219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard stream->set_len -= len; 44219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard stream->set_ptr += len; 45219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard stream->framebuffer_len = stream->frame_storelen + len; 46219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard stream->frame_ptr = stream->frame_ptr_bk; 47219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard stream->used_len += len; 48219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard} 49219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard 50219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgardvoid voAWB_FlushFrameBuffer(FrameStream *stream) 51219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard{ 52219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard stream->set_ptr = NULL; 53219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard stream->frame_ptr_bk = stream->frame_ptr; 54219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard stream->set_len = 0; 55219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard stream->framebuffer_len = 0; 56219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard stream->frame_storelen = 0; 57219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard} 58219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard 59