// 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 {
  CT_AVProfileAudioAac = 3,
  CT_AVProfileAudioSpeex = 4,
  CT_AVProfileAudioOpus = 5,
  CT_AVProfileVideoH26450KbitL12 = 6,
  CT_AVProfileVideoH264530KbitL31 = 7,
  CT_AVProfileVideoH264100KbitL30 = 8,
  CT_AVProfileVideoH2642MbitL40 = 9,
  CT_AVProfileVideoH26450KbitL12Thumbnail = 10,
  CT_AVProfileAvprofileMobile1 = 1,
  CT_AVProfileAvprofileHdMain1 = 2,
} CT_AVProfile;

BOOL CT_AVProfileIsValidValue(CT_AVProfile value);


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


// @@protoc_insertion_point(global_scope)
