Let SetMuxerListener() take ownership of listeners
Change-Id: Id7a9d6f6768556ac4bcaa9c000792a61ee6b758f
This commit is contained in:
parent
5f64698144
commit
71e39e40ad
|
@ -104,9 +104,7 @@ bool CreateRemuxJobs(const StreamDescriptorList& stream_descriptors,
|
||||||
const MuxerOptions& muxer_options,
|
const MuxerOptions& muxer_options,
|
||||||
KeySource* key_source,
|
KeySource* key_source,
|
||||||
MpdNotifier* mpd_notifier,
|
MpdNotifier* mpd_notifier,
|
||||||
std::vector<MuxerListener*>* muxer_listeners,
|
|
||||||
std::vector<RemuxJob*>* remux_jobs) {
|
std::vector<RemuxJob*>* remux_jobs) {
|
||||||
DCHECK(muxer_listeners);
|
|
||||||
DCHECK(remux_jobs);
|
DCHECK(remux_jobs);
|
||||||
|
|
||||||
std::string previous_input;
|
std::string previous_input;
|
||||||
|
@ -181,10 +179,8 @@ bool CreateRemuxJobs(const StreamDescriptorList& stream_descriptors,
|
||||||
muxer_listener = mpd_notify_muxer_listener.Pass();
|
muxer_listener = mpd_notify_muxer_listener.Pass();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (muxer_listener) {
|
if (muxer_listener)
|
||||||
muxer_listeners->push_back(muxer_listener.release());
|
muxer->SetMuxerListener(muxer_listener.Pass());
|
||||||
muxer->SetMuxerListener(muxer_listeners->back());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!AddStreamToMuxer(remux_jobs->back()->demuxer()->streams(),
|
if (!AddStreamToMuxer(remux_jobs->back()->demuxer()->streams(),
|
||||||
stream_iter->stream_selector,
|
stream_iter->stream_selector,
|
||||||
|
@ -274,17 +270,12 @@ bool RunPackager(const StreamDescriptorList& stream_descriptors) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO(kqyang): Should Muxer::SetMuxerListener take owership of the
|
|
||||||
// muxer_listeners object? Then we can get rid of |muxer_listeners|.
|
|
||||||
std::vector<MuxerListener*> muxer_listeners;
|
|
||||||
STLElementDeleter<std::vector<MuxerListener*> > deleter(&muxer_listeners);
|
|
||||||
std::vector<RemuxJob*> remux_jobs;
|
std::vector<RemuxJob*> remux_jobs;
|
||||||
STLElementDeleter<std::vector<RemuxJob*> > scoped_jobs_deleter(&remux_jobs);
|
STLElementDeleter<std::vector<RemuxJob*> > scoped_jobs_deleter(&remux_jobs);
|
||||||
if (!CreateRemuxJobs(stream_descriptors,
|
if (!CreateRemuxJobs(stream_descriptors,
|
||||||
muxer_options,
|
muxer_options,
|
||||||
encryption_key_source.get(),
|
encryption_key_source.get(),
|
||||||
mpd_notifier.get(),
|
mpd_notifier.get(),
|
||||||
&muxer_listeners,
|
|
||||||
&remux_jobs)) {
|
&remux_jobs)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,7 +20,6 @@ Muxer::Muxer(const MuxerOptions& options)
|
||||||
clear_lead_in_seconds_(0),
|
clear_lead_in_seconds_(0),
|
||||||
crypto_period_duration_in_seconds_(0),
|
crypto_period_duration_in_seconds_(0),
|
||||||
cancelled_(false),
|
cancelled_(false),
|
||||||
muxer_listener_(NULL),
|
|
||||||
clock_(NULL) {}
|
clock_(NULL) {}
|
||||||
|
|
||||||
Muxer::~Muxer() {}
|
Muxer::~Muxer() {}
|
||||||
|
@ -80,8 +79,8 @@ void Muxer::Cancel() {
|
||||||
cancelled_ = true;
|
cancelled_ = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Muxer::SetMuxerListener(media::event::MuxerListener* muxer_listener) {
|
void Muxer::SetMuxerListener(scoped_ptr<event::MuxerListener> muxer_listener) {
|
||||||
muxer_listener_ = muxer_listener;
|
muxer_listener_ = muxer_listener.Pass();
|
||||||
}
|
}
|
||||||
|
|
||||||
Status Muxer::AddSample(const MediaStream* stream,
|
Status Muxer::AddSample(const MediaStream* stream,
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
#include "packager/base/time/clock.h"
|
#include "packager/base/time/clock.h"
|
||||||
#include "packager/media/base/muxer_options.h"
|
#include "packager/media/base/muxer_options.h"
|
||||||
#include "packager/media/base/status.h"
|
#include "packager/media/base/status.h"
|
||||||
|
#include "packager/media/event/muxer_listener.h"
|
||||||
|
|
||||||
namespace edash_packager {
|
namespace edash_packager {
|
||||||
namespace media {
|
namespace media {
|
||||||
|
@ -24,10 +25,6 @@ class KeySource;
|
||||||
class MediaSample;
|
class MediaSample;
|
||||||
class MediaStream;
|
class MediaStream;
|
||||||
|
|
||||||
namespace event {
|
|
||||||
class MuxerListener;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Muxer is responsible for taking elementary stream samples and producing
|
/// Muxer is responsible for taking elementary stream samples and producing
|
||||||
/// media containers. An optional KeySource can be provided to Muxer
|
/// media containers. An optional KeySource can be provided to Muxer
|
||||||
/// to generate encrypted outputs.
|
/// to generate encrypted outputs.
|
||||||
|
@ -63,7 +60,7 @@ class Muxer {
|
||||||
|
|
||||||
/// Set a MuxerListener event handler for this object.
|
/// Set a MuxerListener event handler for this object.
|
||||||
/// @param muxer_listener should not be NULL.
|
/// @param muxer_listener should not be NULL.
|
||||||
void SetMuxerListener(event::MuxerListener* muxer_listener);
|
void SetMuxerListener(scoped_ptr<event::MuxerListener> muxer_listener);
|
||||||
|
|
||||||
const std::vector<MediaStream*>& streams() const { return streams_; }
|
const std::vector<MediaStream*>& streams() const { return streams_; }
|
||||||
|
|
||||||
|
@ -87,7 +84,7 @@ class Muxer {
|
||||||
double crypto_period_duration_in_seconds() const {
|
double crypto_period_duration_in_seconds() const {
|
||||||
return crypto_period_duration_in_seconds_;
|
return crypto_period_duration_in_seconds_;
|
||||||
}
|
}
|
||||||
event::MuxerListener* muxer_listener() { return muxer_listener_; }
|
event::MuxerListener* muxer_listener() { return muxer_listener_.get(); }
|
||||||
base::Clock* clock() { return clock_; }
|
base::Clock* clock() { return clock_; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -116,7 +113,7 @@ class Muxer {
|
||||||
double crypto_period_duration_in_seconds_;
|
double crypto_period_duration_in_seconds_;
|
||||||
bool cancelled_;
|
bool cancelled_;
|
||||||
|
|
||||||
event::MuxerListener* muxer_listener_;
|
scoped_ptr<event::MuxerListener> muxer_listener_;
|
||||||
// An external injected clock, can be NULL.
|
// An external injected clock, can be NULL.
|
||||||
base::Clock* clock_;
|
base::Clock* clock_;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue