// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: media.proto

#ifndef PROTOBUF_media_2eproto__INCLUDED
#define PROTOBUF_media_2eproto__INCLUDED

#include <string>

#include <google/protobuf/stubs/common.h>

#if GOOGLE_PROTOBUF_VERSION < 2005000
#error This file was generated by a newer version of protoc which is
#error incompatible with your Protocol Buffer headers.  Please update
#error your headers.
#endif
#if 2005000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION
#error This file was generated by an older version of protoc which is
#error incompatible with your Protocol Buffer headers.  Please
#error regenerate this file with a newer version of protoc.
#endif

#include <google/protobuf/generated_message_util.h>
#include <google/protobuf/message.h>
#include <google/protobuf/repeated_field.h>
#include <google/protobuf/extension_set.h>
#include <google/protobuf/generated_enum_reflection.h>
#include <google/protobuf/unknown_field_set.h>
#include "common.pb.h"
// @@protoc_insertion_point(includes)

// Internal implementation detail -- do not call these.
void  protobuf_AddDesc_media_2eproto();
void protobuf_AssignDesc_media_2eproto();
void protobuf_ShutdownFile_media_2eproto();

class MediaRequest;
class MediaRequest_Prepare;
class MediaRequest_GetPart;
class MediaRequest_Terminate;
class MediaResponse;
class MediaResponse_MediaPart;

enum MediaRequest_Type {
  MediaRequest_Type_TypeMediaPrepare = 1,
  MediaRequest_Type_TypeMediaGet = 2,
  MediaRequest_Type_TypeMediaTerminate = 3
};
bool MediaRequest_Type_IsValid(int value);
const MediaRequest_Type MediaRequest_Type_Type_MIN = MediaRequest_Type_TypeMediaPrepare;
const MediaRequest_Type MediaRequest_Type_Type_MAX = MediaRequest_Type_TypeMediaTerminate;
const int MediaRequest_Type_Type_ARRAYSIZE = MediaRequest_Type_Type_MAX + 1;

const ::google::protobuf::EnumDescriptor* MediaRequest_Type_descriptor();
inline const ::std::string& MediaRequest_Type_Name(MediaRequest_Type value) {
  return ::google::protobuf::internal::NameOfEnum(
    MediaRequest_Type_descriptor(), value);
}
inline bool MediaRequest_Type_Parse(
    const ::std::string& name, MediaRequest_Type* value) {
  return ::google::protobuf::internal::ParseNamedEnum<MediaRequest_Type>(
    MediaRequest_Type_descriptor(), name, value);
}
enum MediaResponse_Type {
  MediaResponse_Type_TypeMediaPart = 1
};
bool MediaResponse_Type_IsValid(int value);
const MediaResponse_Type MediaResponse_Type_Type_MIN = MediaResponse_Type_TypeMediaPart;
const MediaResponse_Type MediaResponse_Type_Type_MAX = MediaResponse_Type_TypeMediaPart;
const int MediaResponse_Type_Type_ARRAYSIZE = MediaResponse_Type_Type_MAX + 1;

const ::google::protobuf::EnumDescriptor* MediaResponse_Type_descriptor();
inline const ::std::string& MediaResponse_Type_Name(MediaResponse_Type value) {
  return ::google::protobuf::internal::NameOfEnum(
    MediaResponse_Type_descriptor(), value);
}
inline bool MediaResponse_Type_Parse(
    const ::std::string& name, MediaResponse_Type* value) {
  return ::google::protobuf::internal::ParseNamedEnum<MediaResponse_Type>(
    MediaResponse_Type_descriptor(), name, value);
}
enum CodecType {
  CodecTypeOGG = 1
};
bool CodecType_IsValid(int value);
const CodecType CodecType_MIN = CodecTypeOGG;
const CodecType CodecType_MAX = CodecTypeOGG;
const int CodecType_ARRAYSIZE = CodecType_MAX + 1;

const ::google::protobuf::EnumDescriptor* CodecType_descriptor();
inline const ::std::string& CodecType_Name(CodecType value) {
  return ::google::protobuf::internal::NameOfEnum(
    CodecType_descriptor(), value);
}
inline bool CodecType_Parse(
    const ::std::string& name, CodecType* value) {
  return ::google::protobuf::internal::ParseNamedEnum<CodecType>(
    CodecType_descriptor(), name, value);
}
// ===================================================================

class MediaRequest_Prepare : public ::google::protobuf::Message {
 public:
  MediaRequest_Prepare();
  virtual ~MediaRequest_Prepare();

  MediaRequest_Prepare(const MediaRequest_Prepare& from);

  inline MediaRequest_Prepare& operator=(const MediaRequest_Prepare& from) {
    CopyFrom(from);
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
    return _unknown_fields_;
  }

  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
    return &_unknown_fields_;
  }

  static const ::google::protobuf::Descriptor* descriptor();
  static const MediaRequest_Prepare& default_instance();

  void Swap(MediaRequest_Prepare* other);

  // implements Message ----------------------------------------------

  MediaRequest_Prepare* New() const;
  void CopyFrom(const ::google::protobuf::Message& from);
  void MergeFrom(const ::google::protobuf::Message& from);
  void CopyFrom(const MediaRequest_Prepare& from);
  void MergeFrom(const MediaRequest_Prepare& from);
  void Clear();
  bool IsInitialized() const;

  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:

  ::google::protobuf::Metadata GetMetadata() const;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  // required int64 id = 1;
  inline bool has_id() const;
  inline void clear_id();
  static const int kIdFieldNumber = 1;
  inline ::google::protobuf::int64 id() const;
  inline void set_id(::google::protobuf::int64 value);

  // required uint32 offset_secs = 2;
  inline bool has_offset_secs() const;
  inline void clear_offset_secs();
  static const int kOffsetSecsFieldNumber = 2;
  inline ::google::protobuf::uint32 offset_secs() const;
  inline void set_offset_secs(::google::protobuf::uint32 value);

  // optional .CodecType codec_type = 3;
  inline bool has_codec_type() const;
  inline void clear_codec_type();
  static const int kCodecTypeFieldNumber = 3;
  inline ::CodecType codec_type() const;
  inline void set_codec_type(::CodecType value);

  // optional uint32 audio_bitrate = 4;
  inline bool has_audio_bitrate() const;
  inline void clear_audio_bitrate();
  static const int kAudioBitrateFieldNumber = 4;
  inline ::google::protobuf::uint32 audio_bitrate() const;
  inline void set_audio_bitrate(::google::protobuf::uint32 value);

  // optional uint32 video_bitrate = 5;
  inline bool has_video_bitrate() const;
  inline void clear_video_bitrate();
  static const int kVideoBitrateFieldNumber = 5;
  inline ::google::protobuf::uint32 video_bitrate() const;
  inline void set_video_bitrate(::google::protobuf::uint32 value);

  // optional uint32 audio_stream_idx = 6;
  inline bool has_audio_stream_idx() const;
  inline void clear_audio_stream_idx();
  static const int kAudioStreamIdxFieldNumber = 6;
  inline ::google::protobuf::uint32 audio_stream_idx() const;
  inline void set_audio_stream_idx(::google::protobuf::uint32 value);

  // optional uint32 video_stream_idx = 7;
  inline bool has_video_stream_idx() const;
  inline void clear_video_stream_idx();
  static const int kVideoStreamIdxFieldNumber = 7;
  inline ::google::protobuf::uint32 video_stream_idx() const;
  inline void set_video_stream_idx(::google::protobuf::uint32 value);

  // optional uint32 subtitle_stream_idx = 8;
  inline bool has_subtitle_stream_idx() const;
  inline void clear_subtitle_stream_idx();
  static const int kSubtitleStreamIdxFieldNumber = 8;
  inline ::google::protobuf::uint32 subtitle_stream_idx() const;
  inline void set_subtitle_stream_idx(::google::protobuf::uint32 value);

  // @@protoc_insertion_point(class_scope:MediaRequest.Prepare)
 private:
  inline void set_has_id();
  inline void clear_has_id();
  inline void set_has_offset_secs();
  inline void clear_has_offset_secs();
  inline void set_has_codec_type();
  inline void clear_has_codec_type();
  inline void set_has_audio_bitrate();
  inline void clear_has_audio_bitrate();
  inline void set_has_video_bitrate();
  inline void clear_has_video_bitrate();
  inline void set_has_audio_stream_idx();
  inline void clear_has_audio_stream_idx();
  inline void set_has_video_stream_idx();
  inline void clear_has_video_stream_idx();
  inline void set_has_subtitle_stream_idx();
  inline void clear_has_subtitle_stream_idx();

  ::google::protobuf::UnknownFieldSet _unknown_fields_;

  ::google::protobuf::int64 id_;
  ::google::protobuf::uint32 offset_secs_;
  int codec_type_;
  ::google::protobuf::uint32 audio_bitrate_;
  ::google::protobuf::uint32 video_bitrate_;
  ::google::protobuf::uint32 audio_stream_idx_;
  ::google::protobuf::uint32 video_stream_idx_;
  ::google::protobuf::uint32 subtitle_stream_idx_;

  mutable int _cached_size_;
  ::google::protobuf::uint32 _has_bits_[(8 + 31) / 32];

  friend void  protobuf_AddDesc_media_2eproto();
  friend void protobuf_AssignDesc_media_2eproto();
  friend void protobuf_ShutdownFile_media_2eproto();

  void InitAsDefaultInstance();
  static MediaRequest_Prepare* default_instance_;
};
// -------------------------------------------------------------------

class MediaRequest_GetPart : public ::google::protobuf::Message {
 public:
  MediaRequest_GetPart();
  virtual ~MediaRequest_GetPart();

  MediaRequest_GetPart(const MediaRequest_GetPart& from);

  inline MediaRequest_GetPart& operator=(const MediaRequest_GetPart& from) {
    CopyFrom(from);
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
    return _unknown_fields_;
  }

  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
    return &_unknown_fields_;
  }

  static const ::google::protobuf::Descriptor* descriptor();
  static const MediaRequest_GetPart& default_instance();

  void Swap(MediaRequest_GetPart* other);

  // implements Message ----------------------------------------------

  MediaRequest_GetPart* New() const;
  void CopyFrom(const ::google::protobuf::Message& from);
  void MergeFrom(const ::google::protobuf::Message& from);
  void CopyFrom(const MediaRequest_GetPart& from);
  void MergeFrom(const MediaRequest_GetPart& from);
  void Clear();
  bool IsInitialized() const;

  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:

  ::google::protobuf::Metadata GetMetadata() const;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  // required uint32 requested_data_size = 1;
  inline bool has_requested_data_size() const;
  inline void clear_requested_data_size();
  static const int kRequestedDataSizeFieldNumber = 1;
  inline ::google::protobuf::uint32 requested_data_size() const;
  inline void set_requested_data_size(::google::protobuf::uint32 value);

  // @@protoc_insertion_point(class_scope:MediaRequest.GetPart)
 private:
  inline void set_has_requested_data_size();
  inline void clear_has_requested_data_size();

  ::google::protobuf::UnknownFieldSet _unknown_fields_;

  ::google::protobuf::uint32 requested_data_size_;

  mutable int _cached_size_;
  ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32];

  friend void  protobuf_AddDesc_media_2eproto();
  friend void protobuf_AssignDesc_media_2eproto();
  friend void protobuf_ShutdownFile_media_2eproto();

  void InitAsDefaultInstance();
  static MediaRequest_GetPart* default_instance_;
};
// -------------------------------------------------------------------

class MediaRequest_Terminate : public ::google::protobuf::Message {
 public:
  MediaRequest_Terminate();
  virtual ~MediaRequest_Terminate();

  MediaRequest_Terminate(const MediaRequest_Terminate& from);

  inline MediaRequest_Terminate& operator=(const MediaRequest_Terminate& from) {
    CopyFrom(from);
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
    return _unknown_fields_;
  }

  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
    return &_unknown_fields_;
  }

  static const ::google::protobuf::Descriptor* descriptor();
  static const MediaRequest_Terminate& default_instance();

  void Swap(MediaRequest_Terminate* other);

  // implements Message ----------------------------------------------

  MediaRequest_Terminate* New() const;
  void CopyFrom(const ::google::protobuf::Message& from);
  void MergeFrom(const ::google::protobuf::Message& from);
  void CopyFrom(const MediaRequest_Terminate& from);
  void MergeFrom(const MediaRequest_Terminate& from);
  void Clear();
  bool IsInitialized() const;

  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:

  ::google::protobuf::Metadata GetMetadata() const;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  // @@protoc_insertion_point(class_scope:MediaRequest.Terminate)
 private:

  ::google::protobuf::UnknownFieldSet _unknown_fields_;


  mutable int _cached_size_;
  ::google::protobuf::uint32 _has_bits_[1];

  friend void  protobuf_AddDesc_media_2eproto();
  friend void protobuf_AssignDesc_media_2eproto();
  friend void protobuf_ShutdownFile_media_2eproto();

  void InitAsDefaultInstance();
  static MediaRequest_Terminate* default_instance_;
};
// -------------------------------------------------------------------

class MediaRequest : public ::google::protobuf::Message {
 public:
  MediaRequest();
  virtual ~MediaRequest();

  MediaRequest(const MediaRequest& from);

  inline MediaRequest& operator=(const MediaRequest& from) {
    CopyFrom(from);
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
    return _unknown_fields_;
  }

  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
    return &_unknown_fields_;
  }

  static const ::google::protobuf::Descriptor* descriptor();
  static const MediaRequest& default_instance();

  void Swap(MediaRequest* other);

  // implements Message ----------------------------------------------

  MediaRequest* New() const;
  void CopyFrom(const ::google::protobuf::Message& from);
  void MergeFrom(const ::google::protobuf::Message& from);
  void CopyFrom(const MediaRequest& from);
  void MergeFrom(const MediaRequest& from);
  void Clear();
  bool IsInitialized() const;

  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:

  ::google::protobuf::Metadata GetMetadata() const;

  // nested types ----------------------------------------------------

  typedef MediaRequest_Prepare Prepare;
  typedef MediaRequest_GetPart GetPart;
  typedef MediaRequest_Terminate Terminate;

  typedef MediaRequest_Type Type;
  static const Type TypeMediaPrepare = MediaRequest_Type_TypeMediaPrepare;
  static const Type TypeMediaGet = MediaRequest_Type_TypeMediaGet;
  static const Type TypeMediaTerminate = MediaRequest_Type_TypeMediaTerminate;
  static inline bool Type_IsValid(int value) {
    return MediaRequest_Type_IsValid(value);
  }
  static const Type Type_MIN =
    MediaRequest_Type_Type_MIN;
  static const Type Type_MAX =
    MediaRequest_Type_Type_MAX;
  static const int Type_ARRAYSIZE =
    MediaRequest_Type_Type_ARRAYSIZE;
  static inline const ::google::protobuf::EnumDescriptor*
  Type_descriptor() {
    return MediaRequest_Type_descriptor();
  }
  static inline const ::std::string& Type_Name(Type value) {
    return MediaRequest_Type_Name(value);
  }
  static inline bool Type_Parse(const ::std::string& name,
      Type* value) {
    return MediaRequest_Type_Parse(name, value);
  }

  // accessors -------------------------------------------------------

  // required .MediaRequest.Type request_type = 1;
  inline bool has_request_type() const;
  inline void clear_request_type();
  static const int kRequestTypeFieldNumber = 1;
  inline ::MediaRequest_Type request_type() const;
  inline void set_request_type(::MediaRequest_Type value);

  // optional .MediaRequest.Prepare prepare = 2;
  inline bool has_prepare() const;
  inline void clear_prepare();
  static const int kPrepareFieldNumber = 2;
  inline const ::MediaRequest_Prepare& prepare() const;
  inline ::MediaRequest_Prepare* mutable_prepare();
  inline ::MediaRequest_Prepare* release_prepare();
  inline void set_allocated_prepare(::MediaRequest_Prepare* prepare);

  // optional .MediaRequest.GetPart get_part = 3;
  inline bool has_get_part() const;
  inline void clear_get_part();
  static const int kGetPartFieldNumber = 3;
  inline const ::MediaRequest_GetPart& get_part() const;
  inline ::MediaRequest_GetPart* mutable_get_part();
  inline ::MediaRequest_GetPart* release_get_part();
  inline void set_allocated_get_part(::MediaRequest_GetPart* get_part);

  // optional .MediaRequest.Terminate terminate = 4;
  inline bool has_terminate() const;
  inline void clear_terminate();
  static const int kTerminateFieldNumber = 4;
  inline const ::MediaRequest_Terminate& terminate() const;
  inline ::MediaRequest_Terminate* mutable_terminate();
  inline ::MediaRequest_Terminate* release_terminate();
  inline void set_allocated_terminate(::MediaRequest_Terminate* terminate);

  // @@protoc_insertion_point(class_scope:MediaRequest)
 private:
  inline void set_has_request_type();
  inline void clear_has_request_type();
  inline void set_has_prepare();
  inline void clear_has_prepare();
  inline void set_has_get_part();
  inline void clear_has_get_part();
  inline void set_has_terminate();
  inline void clear_has_terminate();

  ::google::protobuf::UnknownFieldSet _unknown_fields_;

  ::MediaRequest_Prepare* prepare_;
  ::MediaRequest_GetPart* get_part_;
  ::MediaRequest_Terminate* terminate_;
  int request_type_;

  mutable int _cached_size_;
  ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32];

  friend void  protobuf_AddDesc_media_2eproto();
  friend void protobuf_AssignDesc_media_2eproto();
  friend void protobuf_ShutdownFile_media_2eproto();

  void InitAsDefaultInstance();
  static MediaRequest* default_instance_;
};
// -------------------------------------------------------------------

class MediaResponse_MediaPart : public ::google::protobuf::Message {
 public:
  MediaResponse_MediaPart();
  virtual ~MediaResponse_MediaPart();

  MediaResponse_MediaPart(const MediaResponse_MediaPart& from);

  inline MediaResponse_MediaPart& operator=(const MediaResponse_MediaPart& from) {
    CopyFrom(from);
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
    return _unknown_fields_;
  }

  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
    return &_unknown_fields_;
  }

  static const ::google::protobuf::Descriptor* descriptor();
  static const MediaResponse_MediaPart& default_instance();

  void Swap(MediaResponse_MediaPart* other);

  // implements Message ----------------------------------------------

  MediaResponse_MediaPart* New() const;
  void CopyFrom(const ::google::protobuf::Message& from);
  void MergeFrom(const ::google::protobuf::Message& from);
  void CopyFrom(const MediaResponse_MediaPart& from);
  void MergeFrom(const MediaResponse_MediaPart& from);
  void Clear();
  bool IsInitialized() const;

  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:

  ::google::protobuf::Metadata GetMetadata() const;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  // required uint64 byte_offset = 1;
  inline bool has_byte_offset() const;
  inline void clear_byte_offset();
  static const int kByteOffsetFieldNumber = 1;
  inline ::google::protobuf::uint64 byte_offset() const;
  inline void set_byte_offset(::google::protobuf::uint64 value);

  // repeated bytes data = 2;
  inline int data_size() const;
  inline void clear_data();
  static const int kDataFieldNumber = 2;
  inline const ::std::string& data(int index) const;
  inline ::std::string* mutable_data(int index);
  inline void set_data(int index, const ::std::string& value);
  inline void set_data(int index, const char* value);
  inline void set_data(int index, const void* value, size_t size);
  inline ::std::string* add_data();
  inline void add_data(const ::std::string& value);
  inline void add_data(const char* value);
  inline void add_data(const void* value, size_t size);
  inline const ::google::protobuf::RepeatedPtrField< ::std::string>& data() const;
  inline ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_data();

  // @@protoc_insertion_point(class_scope:MediaResponse.MediaPart)
 private:
  inline void set_has_byte_offset();
  inline void clear_has_byte_offset();

  ::google::protobuf::UnknownFieldSet _unknown_fields_;

  ::google::protobuf::uint64 byte_offset_;
  ::google::protobuf::RepeatedPtrField< ::std::string> data_;

  mutable int _cached_size_;
  ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32];

  friend void  protobuf_AddDesc_media_2eproto();
  friend void protobuf_AssignDesc_media_2eproto();
  friend void protobuf_ShutdownFile_media_2eproto();

  void InitAsDefaultInstance();
  static MediaResponse_MediaPart* default_instance_;
};
// -------------------------------------------------------------------

class MediaResponse : public ::google::protobuf::Message {
 public:
  MediaResponse();
  virtual ~MediaResponse();

  MediaResponse(const MediaResponse& from);

  inline MediaResponse& operator=(const MediaResponse& from) {
    CopyFrom(from);
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
    return _unknown_fields_;
  }

  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
    return &_unknown_fields_;
  }

  static const ::google::protobuf::Descriptor* descriptor();
  static const MediaResponse& default_instance();

  void Swap(MediaResponse* other);

  // implements Message ----------------------------------------------

  MediaResponse* New() const;
  void CopyFrom(const ::google::protobuf::Message& from);
  void MergeFrom(const ::google::protobuf::Message& from);
  void CopyFrom(const MediaResponse& from);
  void MergeFrom(const MediaResponse& from);
  void Clear();
  bool IsInitialized() const;

  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:

  ::google::protobuf::Metadata GetMetadata() const;

  // nested types ----------------------------------------------------

  typedef MediaResponse_MediaPart MediaPart;

  typedef MediaResponse_Type Type;
  static const Type TypeMediaPart = MediaResponse_Type_TypeMediaPart;
  static inline bool Type_IsValid(int value) {
    return MediaResponse_Type_IsValid(value);
  }
  static const Type Type_MIN =
    MediaResponse_Type_Type_MIN;
  static const Type Type_MAX =
    MediaResponse_Type_Type_MAX;
  static const int Type_ARRAYSIZE =
    MediaResponse_Type_Type_ARRAYSIZE;
  static inline const ::google::protobuf::EnumDescriptor*
  Type_descriptor() {
    return MediaResponse_Type_descriptor();
  }
  static inline const ::std::string& Type_Name(Type value) {
    return MediaResponse_Type_Name(value);
  }
  static inline bool Type_Parse(const ::std::string& name,
      Type* value) {
    return MediaResponse_Type_Parse(name, value);
  }

  // accessors -------------------------------------------------------

  // required .Error error = 1;
  inline bool has_error() const;
  inline void clear_error();
  static const int kErrorFieldNumber = 1;
  inline const ::Error& error() const;
  inline ::Error* mutable_error();
  inline ::Error* release_error();
  inline void set_allocated_error(::Error* error);

  // required .MediaResponse.Type response_type = 2;
  inline bool has_response_type() const;
  inline void clear_response_type();
  static const int kResponseTypeFieldNumber = 2;
  inline ::MediaResponse_Type response_type() const;
  inline void set_response_type(::MediaResponse_Type value);

  // optional .MediaResponse.MediaPart part = 3;
  inline bool has_part() const;
  inline void clear_part();
  static const int kPartFieldNumber = 3;
  inline const ::MediaResponse_MediaPart& part() const;
  inline ::MediaResponse_MediaPart* mutable_part();
  inline ::MediaResponse_MediaPart* release_part();
  inline void set_allocated_part(::MediaResponse_MediaPart* part);

  // @@protoc_insertion_point(class_scope:MediaResponse)
 private:
  inline void set_has_error();
  inline void clear_has_error();
  inline void set_has_response_type();
  inline void clear_has_response_type();
  inline void set_has_part();
  inline void clear_has_part();

  ::google::protobuf::UnknownFieldSet _unknown_fields_;

  ::Error* error_;
  ::MediaResponse_MediaPart* part_;
  int response_type_;

  mutable int _cached_size_;
  ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32];

  friend void  protobuf_AddDesc_media_2eproto();
  friend void protobuf_AssignDesc_media_2eproto();
  friend void protobuf_ShutdownFile_media_2eproto();

  void InitAsDefaultInstance();
  static MediaResponse* default_instance_;
};
// ===================================================================


// ===================================================================

// MediaRequest_Prepare

// required int64 id = 1;
inline bool MediaRequest_Prepare::has_id() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void MediaRequest_Prepare::set_has_id() {
  _has_bits_[0] |= 0x00000001u;
}
inline void MediaRequest_Prepare::clear_has_id() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void MediaRequest_Prepare::clear_id() {
  id_ = GOOGLE_LONGLONG(0);
  clear_has_id();
}
inline ::google::protobuf::int64 MediaRequest_Prepare::id() const {
  return id_;
}
inline void MediaRequest_Prepare::set_id(::google::protobuf::int64 value) {
  set_has_id();
  id_ = value;
}

// required uint32 offset_secs = 2;
inline bool MediaRequest_Prepare::has_offset_secs() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void MediaRequest_Prepare::set_has_offset_secs() {
  _has_bits_[0] |= 0x00000002u;
}
inline void MediaRequest_Prepare::clear_has_offset_secs() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void MediaRequest_Prepare::clear_offset_secs() {
  offset_secs_ = 0u;
  clear_has_offset_secs();
}
inline ::google::protobuf::uint32 MediaRequest_Prepare::offset_secs() const {
  return offset_secs_;
}
inline void MediaRequest_Prepare::set_offset_secs(::google::protobuf::uint32 value) {
  set_has_offset_secs();
  offset_secs_ = value;
}

// optional .CodecType codec_type = 3;
inline bool MediaRequest_Prepare::has_codec_type() const {
  return (_has_bits_[0] & 0x00000004u) != 0;
}
inline void MediaRequest_Prepare::set_has_codec_type() {
  _has_bits_[0] |= 0x00000004u;
}
inline void MediaRequest_Prepare::clear_has_codec_type() {
  _has_bits_[0] &= ~0x00000004u;
}
inline void MediaRequest_Prepare::clear_codec_type() {
  codec_type_ = 1;
  clear_has_codec_type();
}
inline ::CodecType MediaRequest_Prepare::codec_type() const {
  return static_cast< ::CodecType >(codec_type_);
}
inline void MediaRequest_Prepare::set_codec_type(::CodecType value) {
  assert(::CodecType_IsValid(value));
  set_has_codec_type();
  codec_type_ = value;
}

// optional uint32 audio_bitrate = 4;
inline bool MediaRequest_Prepare::has_audio_bitrate() const {
  return (_has_bits_[0] & 0x00000008u) != 0;
}
inline void MediaRequest_Prepare::set_has_audio_bitrate() {
  _has_bits_[0] |= 0x00000008u;
}
inline void MediaRequest_Prepare::clear_has_audio_bitrate() {
  _has_bits_[0] &= ~0x00000008u;
}
inline void MediaRequest_Prepare::clear_audio_bitrate() {
  audio_bitrate_ = 0u;
  clear_has_audio_bitrate();
}
inline ::google::protobuf::uint32 MediaRequest_Prepare::audio_bitrate() const {
  return audio_bitrate_;
}
inline void MediaRequest_Prepare::set_audio_bitrate(::google::protobuf::uint32 value) {
  set_has_audio_bitrate();
  audio_bitrate_ = value;
}

// optional uint32 video_bitrate = 5;
inline bool MediaRequest_Prepare::has_video_bitrate() const {
  return (_has_bits_[0] & 0x00000010u) != 0;
}
inline void MediaRequest_Prepare::set_has_video_bitrate() {
  _has_bits_[0] |= 0x00000010u;
}
inline void MediaRequest_Prepare::clear_has_video_bitrate() {
  _has_bits_[0] &= ~0x00000010u;
}
inline void MediaRequest_Prepare::clear_video_bitrate() {
  video_bitrate_ = 0u;
  clear_has_video_bitrate();
}
inline ::google::protobuf::uint32 MediaRequest_Prepare::video_bitrate() const {
  return video_bitrate_;
}
inline void MediaRequest_Prepare::set_video_bitrate(::google::protobuf::uint32 value) {
  set_has_video_bitrate();
  video_bitrate_ = value;
}

// optional uint32 audio_stream_idx = 6;
inline bool MediaRequest_Prepare::has_audio_stream_idx() const {
  return (_has_bits_[0] & 0x00000020u) != 0;
}
inline void MediaRequest_Prepare::set_has_audio_stream_idx() {
  _has_bits_[0] |= 0x00000020u;
}
inline void MediaRequest_Prepare::clear_has_audio_stream_idx() {
  _has_bits_[0] &= ~0x00000020u;
}
inline void MediaRequest_Prepare::clear_audio_stream_idx() {
  audio_stream_idx_ = 0u;
  clear_has_audio_stream_idx();
}
inline ::google::protobuf::uint32 MediaRequest_Prepare::audio_stream_idx() const {
  return audio_stream_idx_;
}
inline void MediaRequest_Prepare::set_audio_stream_idx(::google::protobuf::uint32 value) {
  set_has_audio_stream_idx();
  audio_stream_idx_ = value;
}

// optional uint32 video_stream_idx = 7;
inline bool MediaRequest_Prepare::has_video_stream_idx() const {
  return (_has_bits_[0] & 0x00000040u) != 0;
}
inline void MediaRequest_Prepare::set_has_video_stream_idx() {
  _has_bits_[0] |= 0x00000040u;
}
inline void MediaRequest_Prepare::clear_has_video_stream_idx() {
  _has_bits_[0] &= ~0x00000040u;
}
inline void MediaRequest_Prepare::clear_video_stream_idx() {
  video_stream_idx_ = 0u;
  clear_has_video_stream_idx();
}
inline ::google::protobuf::uint32 MediaRequest_Prepare::video_stream_idx() const {
  return video_stream_idx_;
}
inline void MediaRequest_Prepare::set_video_stream_idx(::google::protobuf::uint32 value) {
  set_has_video_stream_idx();
  video_stream_idx_ = value;
}

// optional uint32 subtitle_stream_idx = 8;
inline bool MediaRequest_Prepare::has_subtitle_stream_idx() const {
  return (_has_bits_[0] & 0x00000080u) != 0;
}
inline void MediaRequest_Prepare::set_has_subtitle_stream_idx() {
  _has_bits_[0] |= 0x00000080u;
}
inline void MediaRequest_Prepare::clear_has_subtitle_stream_idx() {
  _has_bits_[0] &= ~0x00000080u;
}
inline void MediaRequest_Prepare::clear_subtitle_stream_idx() {
  subtitle_stream_idx_ = 0u;
  clear_has_subtitle_stream_idx();
}
inline ::google::protobuf::uint32 MediaRequest_Prepare::subtitle_stream_idx() const {
  return subtitle_stream_idx_;
}
inline void MediaRequest_Prepare::set_subtitle_stream_idx(::google::protobuf::uint32 value) {
  set_has_subtitle_stream_idx();
  subtitle_stream_idx_ = value;
}

// -------------------------------------------------------------------

// MediaRequest_GetPart

// required uint32 requested_data_size = 1;
inline bool MediaRequest_GetPart::has_requested_data_size() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void MediaRequest_GetPart::set_has_requested_data_size() {
  _has_bits_[0] |= 0x00000001u;
}
inline void MediaRequest_GetPart::clear_has_requested_data_size() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void MediaRequest_GetPart::clear_requested_data_size() {
  requested_data_size_ = 0u;
  clear_has_requested_data_size();
}
inline ::google::protobuf::uint32 MediaRequest_GetPart::requested_data_size() const {
  return requested_data_size_;
}
inline void MediaRequest_GetPart::set_requested_data_size(::google::protobuf::uint32 value) {
  set_has_requested_data_size();
  requested_data_size_ = value;
}

// -------------------------------------------------------------------

// MediaRequest_Terminate

// -------------------------------------------------------------------

// MediaRequest

// required .MediaRequest.Type request_type = 1;
inline bool MediaRequest::has_request_type() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void MediaRequest::set_has_request_type() {
  _has_bits_[0] |= 0x00000001u;
}
inline void MediaRequest::clear_has_request_type() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void MediaRequest::clear_request_type() {
  request_type_ = 1;
  clear_has_request_type();
}
inline ::MediaRequest_Type MediaRequest::request_type() const {
  return static_cast< ::MediaRequest_Type >(request_type_);
}
inline void MediaRequest::set_request_type(::MediaRequest_Type value) {
  assert(::MediaRequest_Type_IsValid(value));
  set_has_request_type();
  request_type_ = value;
}

// optional .MediaRequest.Prepare prepare = 2;
inline bool MediaRequest::has_prepare() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void MediaRequest::set_has_prepare() {
  _has_bits_[0] |= 0x00000002u;
}
inline void MediaRequest::clear_has_prepare() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void MediaRequest::clear_prepare() {
  if (prepare_ != NULL) prepare_->::MediaRequest_Prepare::Clear();
  clear_has_prepare();
}
inline const ::MediaRequest_Prepare& MediaRequest::prepare() const {
  return prepare_ != NULL ? *prepare_ : *default_instance_->prepare_;
}
inline ::MediaRequest_Prepare* MediaRequest::mutable_prepare() {
  set_has_prepare();
  if (prepare_ == NULL) prepare_ = new ::MediaRequest_Prepare;
  return prepare_;
}
inline ::MediaRequest_Prepare* MediaRequest::release_prepare() {
  clear_has_prepare();
  ::MediaRequest_Prepare* temp = prepare_;
  prepare_ = NULL;
  return temp;
}
inline void MediaRequest::set_allocated_prepare(::MediaRequest_Prepare* prepare) {
  delete prepare_;
  prepare_ = prepare;
  if (prepare) {
    set_has_prepare();
  } else {
    clear_has_prepare();
  }
}

// optional .MediaRequest.GetPart get_part = 3;
inline bool MediaRequest::has_get_part() const {
  return (_has_bits_[0] & 0x00000004u) != 0;
}
inline void MediaRequest::set_has_get_part() {
  _has_bits_[0] |= 0x00000004u;
}
inline void MediaRequest::clear_has_get_part() {
  _has_bits_[0] &= ~0x00000004u;
}
inline void MediaRequest::clear_get_part() {
  if (get_part_ != NULL) get_part_->::MediaRequest_GetPart::Clear();
  clear_has_get_part();
}
inline const ::MediaRequest_GetPart& MediaRequest::get_part() const {
  return get_part_ != NULL ? *get_part_ : *default_instance_->get_part_;
}
inline ::MediaRequest_GetPart* MediaRequest::mutable_get_part() {
  set_has_get_part();
  if (get_part_ == NULL) get_part_ = new ::MediaRequest_GetPart;
  return get_part_;
}
inline ::MediaRequest_GetPart* MediaRequest::release_get_part() {
  clear_has_get_part();
  ::MediaRequest_GetPart* temp = get_part_;
  get_part_ = NULL;
  return temp;
}
inline void MediaRequest::set_allocated_get_part(::MediaRequest_GetPart* get_part) {
  delete get_part_;
  get_part_ = get_part;
  if (get_part) {
    set_has_get_part();
  } else {
    clear_has_get_part();
  }
}

// optional .MediaRequest.Terminate terminate = 4;
inline bool MediaRequest::has_terminate() const {
  return (_has_bits_[0] & 0x00000008u) != 0;
}
inline void MediaRequest::set_has_terminate() {
  _has_bits_[0] |= 0x00000008u;
}
inline void MediaRequest::clear_has_terminate() {
  _has_bits_[0] &= ~0x00000008u;
}
inline void MediaRequest::clear_terminate() {
  if (terminate_ != NULL) terminate_->::MediaRequest_Terminate::Clear();
  clear_has_terminate();
}
inline const ::MediaRequest_Terminate& MediaRequest::terminate() const {
  return terminate_ != NULL ? *terminate_ : *default_instance_->terminate_;
}
inline ::MediaRequest_Terminate* MediaRequest::mutable_terminate() {
  set_has_terminate();
  if (terminate_ == NULL) terminate_ = new ::MediaRequest_Terminate;
  return terminate_;
}
inline ::MediaRequest_Terminate* MediaRequest::release_terminate() {
  clear_has_terminate();
  ::MediaRequest_Terminate* temp = terminate_;
  terminate_ = NULL;
  return temp;
}
inline void MediaRequest::set_allocated_terminate(::MediaRequest_Terminate* terminate) {
  delete terminate_;
  terminate_ = terminate;
  if (terminate) {
    set_has_terminate();
  } else {
    clear_has_terminate();
  }
}

// -------------------------------------------------------------------

// MediaResponse_MediaPart

// required uint64 byte_offset = 1;
inline bool MediaResponse_MediaPart::has_byte_offset() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void MediaResponse_MediaPart::set_has_byte_offset() {
  _has_bits_[0] |= 0x00000001u;
}
inline void MediaResponse_MediaPart::clear_has_byte_offset() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void MediaResponse_MediaPart::clear_byte_offset() {
  byte_offset_ = GOOGLE_ULONGLONG(0);
  clear_has_byte_offset();
}
inline ::google::protobuf::uint64 MediaResponse_MediaPart::byte_offset() const {
  return byte_offset_;
}
inline void MediaResponse_MediaPart::set_byte_offset(::google::protobuf::uint64 value) {
  set_has_byte_offset();
  byte_offset_ = value;
}

// repeated bytes data = 2;
inline int MediaResponse_MediaPart::data_size() const {
  return data_.size();
}
inline void MediaResponse_MediaPart::clear_data() {
  data_.Clear();
}
inline const ::std::string& MediaResponse_MediaPart::data(int index) const {
  return data_.Get(index);
}
inline ::std::string* MediaResponse_MediaPart::mutable_data(int index) {
  return data_.Mutable(index);
}
inline void MediaResponse_MediaPart::set_data(int index, const ::std::string& value) {
  data_.Mutable(index)->assign(value);
}
inline void MediaResponse_MediaPart::set_data(int index, const char* value) {
  data_.Mutable(index)->assign(value);
}
inline void MediaResponse_MediaPart::set_data(int index, const void* value, size_t size) {
  data_.Mutable(index)->assign(
    reinterpret_cast<const char*>(value), size);
}
inline ::std::string* MediaResponse_MediaPart::add_data() {
  return data_.Add();
}
inline void MediaResponse_MediaPart::add_data(const ::std::string& value) {
  data_.Add()->assign(value);
}
inline void MediaResponse_MediaPart::add_data(const char* value) {
  data_.Add()->assign(value);
}
inline void MediaResponse_MediaPart::add_data(const void* value, size_t size) {
  data_.Add()->assign(reinterpret_cast<const char*>(value), size);
}
inline const ::google::protobuf::RepeatedPtrField< ::std::string>&
MediaResponse_MediaPart::data() const {
  return data_;
}
inline ::google::protobuf::RepeatedPtrField< ::std::string>*
MediaResponse_MediaPart::mutable_data() {
  return &data_;
}

// -------------------------------------------------------------------

// MediaResponse

// required .Error error = 1;
inline bool MediaResponse::has_error() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void MediaResponse::set_has_error() {
  _has_bits_[0] |= 0x00000001u;
}
inline void MediaResponse::clear_has_error() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void MediaResponse::clear_error() {
  if (error_ != NULL) error_->::Error::Clear();
  clear_has_error();
}
inline const ::Error& MediaResponse::error() const {
  return error_ != NULL ? *error_ : *default_instance_->error_;
}
inline ::Error* MediaResponse::mutable_error() {
  set_has_error();
  if (error_ == NULL) error_ = new ::Error;
  return error_;
}
inline ::Error* MediaResponse::release_error() {
  clear_has_error();
  ::Error* temp = error_;
  error_ = NULL;
  return temp;
}
inline void MediaResponse::set_allocated_error(::Error* error) {
  delete error_;
  error_ = error;
  if (error) {
    set_has_error();
  } else {
    clear_has_error();
  }
}

// required .MediaResponse.Type response_type = 2;
inline bool MediaResponse::has_response_type() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void MediaResponse::set_has_response_type() {
  _has_bits_[0] |= 0x00000002u;
}
inline void MediaResponse::clear_has_response_type() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void MediaResponse::clear_response_type() {
  response_type_ = 1;
  clear_has_response_type();
}
inline ::MediaResponse_Type MediaResponse::response_type() const {
  return static_cast< ::MediaResponse_Type >(response_type_);
}
inline void MediaResponse::set_response_type(::MediaResponse_Type value) {
  assert(::MediaResponse_Type_IsValid(value));
  set_has_response_type();
  response_type_ = value;
}

// optional .MediaResponse.MediaPart part = 3;
inline bool MediaResponse::has_part() const {
  return (_has_bits_[0] & 0x00000004u) != 0;
}
inline void MediaResponse::set_has_part() {
  _has_bits_[0] |= 0x00000004u;
}
inline void MediaResponse::clear_has_part() {
  _has_bits_[0] &= ~0x00000004u;
}
inline void MediaResponse::clear_part() {
  if (part_ != NULL) part_->::MediaResponse_MediaPart::Clear();
  clear_has_part();
}
inline const ::MediaResponse_MediaPart& MediaResponse::part() const {
  return part_ != NULL ? *part_ : *default_instance_->part_;
}
inline ::MediaResponse_MediaPart* MediaResponse::mutable_part() {
  set_has_part();
  if (part_ == NULL) part_ = new ::MediaResponse_MediaPart;
  return part_;
}
inline ::MediaResponse_MediaPart* MediaResponse::release_part() {
  clear_has_part();
  ::MediaResponse_MediaPart* temp = part_;
  part_ = NULL;
  return temp;
}
inline void MediaResponse::set_allocated_part(::MediaResponse_MediaPart* part) {
  delete part_;
  part_ = part;
  if (part) {
    set_has_part();
  } else {
    clear_has_part();
  }
}


// @@protoc_insertion_point(namespace_scope)

#ifndef SWIG
namespace google {
namespace protobuf {

template <>
inline const EnumDescriptor* GetEnumDescriptor< ::MediaRequest_Type>() {
  return ::MediaRequest_Type_descriptor();
}
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::MediaResponse_Type>() {
  return ::MediaResponse_Type_descriptor();
}
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::CodecType>() {
  return ::CodecType_descriptor();
}

}  // namespace google
}  // namespace protobuf
#endif  // SWIG

// @@protoc_insertion_point(global_scope)

#endif  // PROTOBUF_media_2eproto__INCLUDED
