- 博客(61)
- 资源 (5)
- 收藏
- 关注
翻译 搭建一个完整平台
采集,iOS是比较简单的,Android则要做些机型适配工作,PC最麻烦各种奇葩摄像头驱动,出了问题特别不好处理,建议放弃PC只支持手机主播,目前几个新进的直播平台都是这样的。前处理,现在直播美颜已经是标配了,80%的主播没有美颜根本没法看。美颜算法需要用到GPU编程,需要懂图像处理算法的人,没有好的开源实现,要自己参考论文去研究。难点不在于美颜效果,而在于GPU占用和美颜效果之间找平衡。
2017-09-05 14:15:41
471
原创 TimeFormat
// Returns the time of day, e.g., "3:07 PM".std::wstring TimeFormatTimeOfDay(const Time& time); // Returns a shortened date, e.g. "Nov 7, 2007"std::wstring TimeFormatShortDate(const Time& ti
2009-05-31 16:30:00
600
原创 Timer
class BaseTimer_Helper { public: // Stops the timer. ~BaseTimer_Helper() { OrphanDelayedTask(); } // Returns true if the timer is running (i.e., not stopped). bool IsRunning
2009-05-31 16:24:00
534
原创 Time
class TimeDelta { public: TimeDelta() : delta_(0) { } // Converts units of time to TimeDeltas. static TimeDelta FromDays(int64 days); static TimeDelta FromHours(int64 hours);
2009-05-31 16:20:00
459
原创 ThreadLocalStorage
class ThreadLocalStorage { public: // Prototype for the TLS destructor function, which can be optionally used to // cleanup thread local storage on thread exit. value is the data that
2009-05-31 16:18:00
582
原创 ThreadLocal
// Helper functions that abstract the cross-platform APIs. Do not use directly.struct ThreadLocalPlatform {#if defined(OS_WIN) typedef int SlotType;#elif defined(OS_POSIX) typedef pthre
2009-05-31 16:13:00
298
原创 Task
class Task : public tracked_objects::Tracked { public: Task() {} virtual ~Task() {} // Tasks are automatically deleted after Run is called. virtual void Run() = 0;}; class Can
2009-05-31 15:49:00
484
原创 SysInfo
class SysInfo { public: // Return the number of logical processors/cores on the current machine. // WARNING: On POSIX, this method uses static variables and is not threadsafe // until it
2009-05-31 15:31:00
600
原创 SystemMonitor
class SystemMonitor { public: // Access to the Singleton static SystemMonitor* Get() { // Uses the LeakySingletonTrait because cleanup is optional. return Singleton >::get
2009-05-31 15:24:00
579
原创 StringTokenizerT
template class StringTokenizerT { public: typedef typename str::value_type char_type; // Options that may be pass to set_options() enum { // Specifies the delimiters should be r
2009-05-31 15:14:00
443
原创 StringPiece
class StringPiece { public: typedef size_t size_type; private: const char* ptr_; size_type length_; public: // We provide non-explicit singleton constructors so users c
2009-05-31 15:09:00
1846
原创 StatsCounter
//------------------------------------------------------------------------------// StatsCounter represents a counter in the StatsTable class.class StatsCounter { public: // Create a StatsC
2009-05-31 15:00:00
427
原创 StackContainer
templateclass StackAllocator : public std::allocator { public: typedef typename std::allocator::pointer pointer; typedef typename std::allocator::size_type size_type; // Backing stor
2009-05-31 14:51:00
449
原创 SpinWait
#define SPIN_FOR_1_SECOND_OR_UNTIL_TRUE(expression) / SPIN_FOR_TIMEDELTA_OR_UNTIL_TRUE(base::TimeDelta::FromSeconds(1), / (expression)) #define SPIN_F
2009-05-31 14:34:00
315
原创 Singleton
// Default traits for Singleton. Calls operator new and operator delete on// the object. Registers automatic deletion at process exit.// Overload if you need arguments or another memory allocat
2009-05-31 14:15:00
529
原创 DelegateSimpleThreadPool
class DelegateSimpleThreadPool : public DelegateSimpleThread::Delegate { public: typedef DelegateSimpleThread::Delegate Delegate; DelegateSimpleThreadPool(const std::string name_prefix, i
2009-05-31 14:10:00
502
原创 DelegateSimpleThread
class SimpleThread : public PlatformThread::Delegate { public: class Options { public: Options() : stack_size_(0) { } ~Options() { } // We use the standard compiler-suppl
2009-05-31 14:04:00
336
原创 SharedMemory
// SharedMemoryHandle is a platform specific type which represents// the underlying OS handle to a shared memory segment.#if defined(OS_WIN)typedef HANDLE SharedMemoryHandle;typedef HANDLE S
2009-05-31 13:53:00
876
原创 RefCountedThreadSafe
class RefCountedThreadSafeBase { protected: RefCountedThreadSafeBase(); ~RefCountedThreadSafeBase(); void AddRef(); // Returns true if the object should self-delete. bool Rele
2009-05-31 13:49:00
1439
原创 RefCounted
class RefCountedBase { protected: RefCountedBase(); ~RefCountedBase(); void AddRef(); // Returns true if the object should self-delete. bool Release(); private: int re
2009-05-31 13:47:00
715
原创 StackBstrT
// Template class to generate a BSTR from a static wide string// without touching the heap. Use this class via the StackBstrVar and// StackBstr macros.template class StackBstrT { public:
2009-05-31 13:43:00
215
原创 ScopedBstr
// Manages a BSTR string pointer.// The class interface is based on scoped_ptr.class ScopedBstr { public: ScopedBstr() : bstr_(NULL) { } // Constructor to create a new BSTR. //
2009-05-31 13:42:00
242
原创 ScopedClipboardWriter
// This class is a wrapper for |Clipboard| that handles packing data// into a Clipboard::ObjectMap.// NB: You should probably NOT be using this class if you include// webkit_glue.h. Use Scoped
2009-05-31 13:39:00
229
原创 ScopedComPtr
// Utility template to prevent users of ScopedComPtr from calling AddRef and/or// Release() without going through the ScopedComPtr class.template class BlockIUnknownMethods : public Interface
2009-05-31 13:37:00
378
原创 ScopedHGlobal
templateclass ScopedHGlobal { public: explicit ScopedHGlobal(HGLOBAL glob) : glob_(glob) { data_ = static_cast(GlobalLock(glob_)); } ~ScopedHGlobal() { GlobalUnlock(glob_);
2009-05-31 11:54:00
209
原创 ScopedGDIObject
templateclass ScopedGDIObject { public: ScopedGDIObject() : object_(NULL) {} explicit ScopedGDIObject(T object) : object_(object) {} ~ScopedGDIObject() { Close(); } T
2009-05-31 11:53:00
214
原创 ScopedHDC
class ScopedHDC { public: ScopedHDC() : hdc_(NULL) { } explicit ScopedHDC(HDC h) : hdc_(h) { } ~ScopedHDC() { Close(); } HDC Get() { return hdc_; } void Set
2009-05-31 11:52:00
241
原创 ScopedFindFileHandle
class ScopedFindFileHandle { public: explicit ScopedFindFileHandle(HANDLE handle) : handle_(handle) { // Windows is inconsistent about invalid handles, so we always use NULL if (handle_
2009-05-31 11:51:00
232
原创 ScopedHandle
class ScopedHandle { public: ScopedHandle() : handle_(NULL) { } explicit ScopedHandle(HANDLE h) : handle_(NULL) { Set(h); } ~ScopedHandle() { Close(); } //
2009-05-31 11:50:00
444
原创 ScopedStdioHandle
class ScopedStdioHandle { public: ScopedStdioHandle() : handle_(NULL) { } explicit ScopedStdioHandle(FILE* handle) : handle_(handle) { } ~ScopedStdioHandle() { Cl
2009-05-31 11:49:00
192
原创 scoped_ptr_malloc
templateclass scoped_ptr_malloc { public: // The element type typedef C element_type; // Constructor. Defaults to intializing with NULL. // There is no way to create an uninit
2009-05-31 11:47:00
336
原创 scoped_array
template class scoped_array { public: // The element type typedef C element_type; // Constructor. Defaults to intializing with NULL. // There is no way to create an uninitiali
2009-05-31 11:45:00
566
原创 scoped_ptr
template class scoped_ptr { public: // The element type typedef C element_type; // Constructor. Defaults to intializing with NULL. // There is no way to create an uninitializ
2009-05-31 11:44:00
314
原创 ScopedTempDir
class ScopedTempDir { public: // No directory is owned/created initially. ScopedTempDir(); // Recursively delete path_ ~ScopedTempDir(); // Creates a unique directory in TempP
2009-05-31 11:42:00
597
原创 ScopedVariant
class ScopedVariant { public: // Declaration of a global variant variable thats always VT_EMPTY static const VARIANT kEmptyVariant; // Default constructor. ScopedVariant() { /
2009-05-31 11:40:00
299
原创 ScopedVector
// ScopedVector wraps a vector deleting the elements from its// destructor.template class ScopedVector { public: typedef typename std::vector::iterator iterator; typedef typename std:
2009-05-31 11:37:00
618
原创 MD5
// These functions perform MD5 operations. The simplest call is MD5Sum to// generate the MD5 sum of the given data.//// You can also compute the MD5 sum of data incrementally by making multip
2009-05-31 10:00:00
269
原创 DISALLOW
// A macro to disallow the copy constructor and operator= functions// This should be used in the private: declarations for a class#define DISALLOW_COPY_AND_ASSIGN(TypeName) / TypeName(const
2009-05-31 09:45:00
462
原创 bit_cast
template inline Dest bit_cast(const Source& source) { // Compile time assertion: sizeof(Dest) == sizeof(Source) // A compile error here means your Dest and Source have different sizes. t
2009-05-31 09:43:00
466
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人