| /* ------------------------------------------------------------------ |
| * Copyright (C) 1998-2009 PacketVideo |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either |
| * express or implied. |
| * See the License for the specific language governing permissions |
| * and limitations under the License. |
| * ------------------------------------------------------------------- |
| */ |
| #include "pcmu_media_info_parser.h" |
| #include "oscl_string_utils.h" |
| #include "oscl_string_containers.h" |
| |
| SDP_ERROR_CODE |
| SDPPCMUMediaInfoParser::parseMediaInfo(const char *buff, const int index, SDPInfo *sdp, payloadVector payload_vec, bool isSipSdp, int alt_id, bool alt_def_id) |
| { |
| OSCL_UNUSED_ARG(alt_id); |
| OSCL_UNUSED_ARG(alt_def_id); |
| |
| const char *current_start = buff; //Pointer to the beginning of the media text |
| const char *end = buff + index; //Pointer to the end of the media text |
| |
| (void) current_start; |
| (void) end; |
| |
| //Allocate media info class here |
| void *memory = sdp->alloc(sizeof(pcmu_mediaInfo), false); |
| if (NULL == memory) |
| { |
| return SDP_NO_MEMORY; |
| } |
| else |
| { |
| pcmu_mediaInfo *pcmuA = OSCL_PLACEMENT_NEW(memory, pcmu_mediaInfo()); |
| |
| pcmuA->setMediaInfoID(sdp->getMediaObjectIndex()); |
| |
| // Allocate memory to the payload specific objects |
| for (uint32 ii = 0; ii < payload_vec.size(); ii++) |
| { |
| void* mem = pcmuA->alloc(sizeof(PcmuPayloadSpecificInfoType)); |
| if (mem == NULL) |
| { |
| return SDP_NO_MEMORY; |
| } |
| else |
| { |
| PcmuPayloadSpecificInfoType* payload = OSCL_PLACEMENT_NEW(mem, PcmuPayloadSpecificInfoType(payload_vec[ii])); |
| (void) payload; |
| } |
| } |
| |
| |
| SDP_ERROR_CODE status = baseMediaInfoParser(buff, pcmuA, index , false, false, isSipSdp); |
| if (status != SDP_SUCCESS) |
| { |
| return status; |
| } |
| |
| // payloadNumber is present in the mediaInfo. get the payload |
| // Specific pointer corresponding to this payload |
| PcmuPayloadSpecificInfoType* payloadPtr = NULL; |
| |
| for (uint32 jj = 0; jj < payload_vec.size(); jj++) |
| { |
| payloadPtr = (PcmuPayloadSpecificInfoType*)pcmuA->getPayloadSpecificInfoTypePtr(payload_vec[jj]); |
| if (payloadPtr == NULL) |
| return SDP_PAYLOAD_MISMATCH; |
| |
| payloadPtr->setSampleRate(8000); |
| } |
| } |
| return SDP_SUCCESS; |
| } |
| |
| //EndOfFile |
| |