Nagram/TMessagesProj/jni/libtgvoip3/os/darwin/TGVVideoSource.mm
2020-04-24 12:21:58 +03:00

58 lines
1.3 KiB
Plaintext

//
// libtgvoip is free and unencumbered public domain software.
// For more information, see http://unlicense.org or the UNLICENSE file
// you should have received with this source code distribution.
//
#import "TGVVideoSource.h"
#include "VideoToolboxEncoderSource.h"
@implementation TGVVideoSource{
tgvoip::video::VideoToolboxEncoderSource* nativeSource;
id<TGVVideoSourceDelegate> delegate;
}
- (instancetype)initWithDelegate: (id<TGVVideoSourceDelegate>)delegate{
self=[super init];
nativeSource=new tgvoip::video::VideoToolboxEncoderSource(self);
self->delegate=delegate;
return self;
}
- (void)dealloc{
delete nativeSource;
}
- (void)sendVideoFrame: (CMSampleBufferRef)buffer{
nativeSource->EncodeFrame(buffer);
}
- (TGVVideoResolution)maximumSupportedVideoResolution{
return tgvoip::video::VideoToolboxEncoderSource::SupportsFullHD() ? TGVVideoResolution1080 : TGVVideoResolution720;
}
- (void)setVideoRotation: (unsigned int)rotation{
nativeSource->SetRotation(rotation);
}
- (void)pauseStream{
nativeSource->SetStreamPaused(true);
}
- (void)resumeStream{
nativeSource->SetStreamPaused(false);
}
- (tgvoip::video::VideoSource*)nativeVideoSource{
return nativeSource;
}
- (void)_requestFrameRate: (unsigned int)frameRate{
dispatch_async(dispatch_get_main_queue(), ^{
[delegate setFrameRate:frameRate];
});
}
@end