blob: 08084eb7266928d99059f18055a128e4793e193c [file] [log] [blame]
// Copyright 2016 The Cobalt Authors. All Rights Reserved.
//
// 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.
#ifndef STARBOARD_SHARED_STARBOARD_PLAYER_FILTER_VIDEO_FRAME_INTERNAL_H_
#define STARBOARD_SHARED_STARBOARD_PLAYER_FILTER_VIDEO_FRAME_INTERNAL_H_
#include "starboard/common/log.h"
#include "starboard/common/ref_counted.h"
#include "starboard/configuration.h"
#include "starboard/media.h"
#include "starboard/shared/internal_only.h"
namespace starboard {
namespace shared {
namespace starboard {
namespace player {
namespace filter {
// A video frame produced by a video decoder.
class VideoFrame : public RefCountedThreadSafe<VideoFrame> {
public:
// An invalid media timestamp to indicate end of stream.
static const SbTime kMediaTimeEndOfStream = -1;
explicit VideoFrame(SbTime timestamp) : timestamp_(timestamp) {}
virtual ~VideoFrame() {}
bool is_end_of_stream() const { return timestamp_ == kMediaTimeEndOfStream; }
SbTime timestamp() const {
SB_DCHECK(!is_end_of_stream());
return timestamp_;
}
static scoped_refptr<VideoFrame> CreateEOSFrame() {
return new VideoFrame(kMediaTimeEndOfStream);
}
private:
SbTime timestamp_;
VideoFrame(const VideoFrame&) = delete;
void operator=(const VideoFrame&) = delete;
};
} // namespace filter
} // namespace player
} // namespace starboard
} // namespace shared
} // namespace starboard
#endif // STARBOARD_SHARED_STARBOARD_PLAYER_FILTER_VIDEO_FRAME_INTERNAL_H_