gecko-dev/dom/media/encoder/ContainerWriter.h
Bryce Van Dyk f2da582b18 Bug 1014393 - Remove EncodedFrameContainer. r=pehrsons
Remove EncodedFrameContainer and clean up areas where it was used.
EncodedFrameContainer provided a wrapper around an
nsTArray<RefPtr<EncodedFrame>>, but it simplifies the code to simply expose
this array. Also clean up unused enums in EncodedFrame, and clean up some of
the outdated comments for our encoded frame handling.

Differential Revision: https://phabricator.services.mozilla.com/D35384

--HG--
rename : dom/media/encoder/EncodedFrameContainer.h => dom/media/encoder/EncodedFrame.h
extra : moz-landing-system : lando
2019-08-03 17:27:16 +00:00

74 lines
2.5 KiB
C++

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-*/
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef ContainerWriter_h_
#define ContainerWriter_h_
#include "nsTArray.h"
#include "EncodedFrame.h"
#include "TrackMetadataBase.h"
namespace mozilla {
/**
* ContainerWriter packs encoded track data into a specific media container.
*/
class ContainerWriter {
public:
ContainerWriter() : mInitialized(false), mIsWritingComplete(false) {}
virtual ~ContainerWriter() {}
// Mapping to DOMMediaStream::TrackTypeHints
enum {
CREATE_AUDIO_TRACK = 1 << 0,
CREATE_VIDEO_TRACK = 1 << 1,
};
enum { END_OF_STREAM = 1 << 0 };
/**
* Writes encoded track data from aData into the internal stream of container
* writer. aFlags is used to signal the impl of different conditions
* such as END_OF_STREAM. Each impl may handle different flags, and should be
* documented accordingly. Currently, WriteEncodedTrack doesn't support
* explicit track specification, though each impl may provide logic to
* allocate frames into different tracks.
*/
virtual nsresult WriteEncodedTrack(
const nsTArray<RefPtr<EncodedFrame>>& aData, uint32_t aFlags = 0) = 0;
/**
* Set the meta data pointer into muxer
* This function will check the integrity of aMetadata.
* If the meta data isn't well format, this function will return
* NS_ERROR_FAILURE to caller, else save the pointer to mMetadata and return
* NS_OK.
*/
virtual nsresult SetMetadata(TrackMetadataBase* aMetadata) = 0;
/**
* Indicate if the writer has finished to output data
*/
virtual bool IsWritingComplete() { return mIsWritingComplete; }
enum { FLUSH_NEEDED = 1 << 0, GET_HEADER = 1 << 1 };
/**
* Copies the final container data to a buffer if it has accumulated enough
* packets from WriteEncodedTrack. This buffer of data is appended to
* aOutputBufs, and existing elements of aOutputBufs should not be modified.
* aFlags is true with FLUSH_NEEDED will force OggWriter to flush an ogg page
* even it is not full, and copy these container data to a buffer for
* aOutputBufs to append.
*/
virtual nsresult GetContainerData(nsTArray<nsTArray<uint8_t>>* aOutputBufs,
uint32_t aFlags = 0) = 0;
protected:
bool mInitialized;
bool mIsWritingComplete;
};
} // namespace mozilla
#endif