michael@0: /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ michael@0: /* vim: set sw=2 ts=8 et tw=80 : */ michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: #include "RtspMetaData.h" michael@0: #include "prlog.h" michael@0: michael@0: using namespace mozilla; michael@0: michael@0: namespace mozilla { michael@0: namespace net { michael@0: michael@0: NS_IMPL_ISUPPORTS(RtspMetaData, nsIStreamingProtocolMetaData) michael@0: michael@0: RtspMetaData::RtspMetaData() michael@0: : mIndex(0) michael@0: , mWidth(0) michael@0: , mHeight(0) michael@0: , mDuration(0) michael@0: , mSampleRate(0) michael@0: , mCurrentTimeStamp(0) michael@0: , mChannelCount(0) michael@0: { michael@0: mMimeType.AssignLiteral("NONE"); michael@0: } michael@0: michael@0: RtspMetaData::~RtspMetaData() michael@0: { michael@0: michael@0: } michael@0: michael@0: nsresult michael@0: RtspMetaData::DeserializeRtspMetaData(const InfallibleTArray& metaArray) michael@0: { michael@0: nsresult rv; michael@0: michael@0: // Deserialize meta data. michael@0: for (uint32_t i = 0; i < metaArray.Length(); i++) { michael@0: const RtspMetaValue& value = metaArray[i].value(); michael@0: const nsCString& name = metaArray[i].name(); michael@0: michael@0: if (name.EqualsLiteral("FRAMETYPE")) { michael@0: rv = SetFrameType(value); michael@0: NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); michael@0: } else if (name.EqualsLiteral("TIMESTAMP")) { michael@0: rv = SetTimeStamp(value); michael@0: NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); michael@0: } else if (name.EqualsLiteral("TRACKS")) { michael@0: rv = SetTotalTracks(value); michael@0: NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); michael@0: } else if(name.EqualsLiteral("MIMETYPE")) { michael@0: rv = SetMimeType(value); michael@0: NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); michael@0: } else if (name.EqualsLiteral("WIDTH")) { michael@0: rv = SetWidth(value); michael@0: NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); michael@0: } else if (name.EqualsLiteral("HEIGHT")) { michael@0: rv = SetHeight(value); michael@0: NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); michael@0: } else if (name.EqualsLiteral("SAMPLERATE")) { michael@0: rv = SetSampleRate(value); michael@0: NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); michael@0: } else if(name.EqualsLiteral("DURATION")) { michael@0: rv = SetDuration(value); michael@0: NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); michael@0: } else if (name.EqualsLiteral("CHANNELCOUNT")) { michael@0: rv = SetChannelCount(value); michael@0: NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); michael@0: } else if (name.EqualsLiteral("ESDS")) { michael@0: rv = SetEsdsData(value); michael@0: NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); michael@0: } else if (name.EqualsLiteral("AVCC")) { michael@0: rv = SetAvccData(value); michael@0: NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); michael@0: } michael@0: } michael@0: michael@0: return NS_OK; michael@0: } michael@0: michael@0: NS_IMETHODIMP michael@0: RtspMetaData::GetFrameType(uint32_t *aFrameType) michael@0: { michael@0: NS_ENSURE_ARG_POINTER(aFrameType); michael@0: *aFrameType = mFrameType; michael@0: return NS_OK; michael@0: } michael@0: michael@0: NS_IMETHODIMP michael@0: RtspMetaData::SetFrameType(uint32_t aFrameType) michael@0: { michael@0: mFrameType = aFrameType; michael@0: return NS_OK; michael@0: } michael@0: michael@0: NS_IMETHODIMP michael@0: RtspMetaData::GetTotalTracks(uint32_t *aTracks) michael@0: { michael@0: NS_ENSURE_ARG_POINTER(aTracks); michael@0: *aTracks = mTotalTracks; michael@0: return NS_OK; michael@0: } michael@0: michael@0: NS_IMETHODIMP michael@0: RtspMetaData::SetTotalTracks(uint32_t aTracks) michael@0: { michael@0: mTotalTracks = aTracks; michael@0: return NS_OK; michael@0: } michael@0: michael@0: NS_IMETHODIMP michael@0: RtspMetaData::GetMimeType(nsACString & aMimeType) michael@0: { michael@0: aMimeType.Assign(mMimeType); michael@0: return NS_OK; michael@0: } michael@0: michael@0: NS_IMETHODIMP michael@0: RtspMetaData::SetMimeType(const nsACString & aMimeType) michael@0: { michael@0: mMimeType.Assign(aMimeType); michael@0: return NS_OK; michael@0: } michael@0: michael@0: NS_IMETHODIMP michael@0: RtspMetaData::GetWidth(uint32_t *aWidth) michael@0: { michael@0: NS_ENSURE_ARG_POINTER(aWidth); michael@0: *aWidth = mWidth; michael@0: return NS_OK; michael@0: } michael@0: michael@0: NS_IMETHODIMP michael@0: RtspMetaData::SetWidth(uint32_t aWidth) michael@0: { michael@0: mWidth = aWidth; michael@0: return NS_OK; michael@0: } michael@0: michael@0: /* attribute unsigned long height; */ michael@0: NS_IMETHODIMP michael@0: RtspMetaData::GetHeight(uint32_t *aHeight) michael@0: { michael@0: NS_ENSURE_ARG_POINTER(aHeight); michael@0: *aHeight = mHeight; michael@0: return NS_OK; michael@0: } michael@0: michael@0: NS_IMETHODIMP michael@0: RtspMetaData::SetHeight(uint32_t aHeight) michael@0: { michael@0: mHeight = aHeight; michael@0: return NS_OK; michael@0: } michael@0: michael@0: /* attribute unsigned long long duration; */ michael@0: NS_IMETHODIMP michael@0: RtspMetaData::GetDuration(uint64_t *aDuration) michael@0: { michael@0: NS_ENSURE_ARG_POINTER(aDuration); michael@0: *aDuration = mDuration; michael@0: return NS_OK; michael@0: } michael@0: michael@0: NS_IMETHODIMP michael@0: RtspMetaData::SetDuration(uint64_t aDuration) michael@0: { michael@0: mDuration = aDuration; michael@0: return NS_OK; michael@0: } michael@0: michael@0: /* attribute unsigned long sampleRate; */ michael@0: NS_IMETHODIMP michael@0: RtspMetaData::GetSampleRate(uint32_t *aSampleRate) michael@0: { michael@0: NS_ENSURE_ARG_POINTER(aSampleRate); michael@0: *aSampleRate = mSampleRate; michael@0: return NS_OK; michael@0: } michael@0: michael@0: NS_IMETHODIMP michael@0: RtspMetaData::SetSampleRate(uint32_t aSampleRate) michael@0: { michael@0: mSampleRate = aSampleRate; michael@0: return NS_OK; michael@0: } michael@0: michael@0: NS_IMETHODIMP michael@0: RtspMetaData::GetTimeStamp(uint64_t *aTimeStamp) michael@0: { michael@0: NS_ENSURE_ARG_POINTER(aTimeStamp); michael@0: *aTimeStamp = mCurrentTimeStamp; michael@0: return NS_OK; michael@0: } michael@0: michael@0: NS_IMETHODIMP michael@0: RtspMetaData::SetTimeStamp(uint64_t aTimeStamp) michael@0: { michael@0: mCurrentTimeStamp = aTimeStamp; michael@0: return NS_OK; michael@0: } michael@0: michael@0: NS_IMETHODIMP michael@0: RtspMetaData::GetChannelCount(uint32_t *aChannelCount) michael@0: { michael@0: NS_ENSURE_ARG_POINTER(aChannelCount); michael@0: *aChannelCount = mChannelCount; michael@0: return NS_OK; michael@0: } michael@0: michael@0: NS_IMETHODIMP michael@0: RtspMetaData::SetChannelCount(uint32_t aChannelCount) michael@0: { michael@0: mChannelCount = aChannelCount; michael@0: return NS_OK; michael@0: } michael@0: michael@0: NS_IMETHODIMP michael@0: RtspMetaData::GetEsdsData(nsACString & aESDS) michael@0: { michael@0: aESDS.Assign(mESDS); michael@0: return NS_OK; michael@0: } michael@0: michael@0: NS_IMETHODIMP michael@0: RtspMetaData::SetEsdsData(const nsACString & aESDS) michael@0: { michael@0: mESDS.Assign(aESDS); michael@0: return NS_OK; michael@0: } michael@0: michael@0: NS_IMETHODIMP michael@0: RtspMetaData::GetAvccData(nsACString & aAVCC) michael@0: { michael@0: aAVCC.Assign(mAVCC); michael@0: return NS_OK; michael@0: } michael@0: michael@0: NS_IMETHODIMP michael@0: RtspMetaData::SetAvccData(const nsACString & aAVCC) michael@0: { michael@0: mAVCC.Assign(aAVCC); michael@0: return NS_OK; michael@0: } michael@0: michael@0: } // namespace mozilla::net michael@0: } // namespace mozilla