// Generated by the protocol buffer compiler.  DO NOT EDIT!

#import "ProtocolBuffers.h"

// @@protoc_insertion_point(imports)

#ifndef __has_feature
  #define __has_feature(x) 0 // Compatibility with non-clang compilers.
#endif // __has_feature

#ifndef NS_RETURNS_NOT_RETAINED
  #if __has_feature(attribute_ns_returns_not_retained)
    #define NS_RETURNS_NOT_RETAINED __attribute__((ns_returns_not_retained))
  #else
    #define NS_RETURNS_NOT_RETAINED
  #endif
#endif

typedef enum {
  AVProfileAudioAac = 3,
  AVProfileAudioSpeex = 4,
  AVProfileAudioOpus = 5,
  AVProfileVideoH26450KbitL12 = 6,
  AVProfileVideoH264530KbitL31 = 7,
  AVProfileVideoH264100KbitL30 = 8,
  AVProfileVideoH2642MbitL40 = 9,
  AVProfileVideoH26450KbitL12Thumbnail = 10,
  AVProfileAvprofileMobile1 = 1,
  AVProfileAvprofileHdMain1 = 2,
} AVProfile;

BOOL AVProfileIsValidValue(AVProfile value);


@interface CommontalkRoot : NSObject {
}
+ (PBExtensionRegistry*) extensionRegistry;
+ (void) registerAllExtensions:(PBMutableExtensionRegistry*) registry;
@end


// @@protoc_insertion_point(global_scope)
