自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

原创 ARRAY_SIZE

#define ARRAY_SIZE(array) (sizeof array  / sizeof array[0])

2009-05-31 09:49:00 271

原创 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

Applying UML and Patterns

介绍用UML进行设计模式的开发。 一本非常值得一看的书!

2008-11-17

C++ Network Programming Vol 2

网络编程第二卷, 用C++封装了API。

2008-11-17

C++ Network Programming Vol 1

一本介绍网络编程的书。 用C++封装了网络API。

2008-11-17

Understanding The Linux Kernel

一本介绍Linux内核的书籍。 英文,原籍,值得一看。

2008-11-17

Linux设备驱动程序第三版

关于Linux设备驱动的开发,一本非常好的参考书籍。

2008-11-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除