avatar
Articles
57
Tags
1
Categories
5

vanney随笔

vanney随笔

FFmpeg源码调试
Created2023-10-07|FFmpeg
前言最近在学习下FFmpeg源代码,也会同时记录这一学习过程。这篇是这一系列的开篇,记录FFmpeg的源码调试方法。调试环境:Mac + Xcode 整体调试流程使用Xcode调试FFmpeg源代码,主要有以下几个步骤: 下载FFmpeg源码 编译FFmpeg Xcode调试FFmpeg源码 下载FFmpeg源码直接github上下载即可,https://github.com/FFmpeg/FFmpeg 编译FFmpeg最终的目的是使用ffplay播放视频,并且能够源码调试这个播放流程。 安装SDL库ffplay的编译依赖SDL库,所以先要安装SDL。直接是用brew安装 1brew install sdl2 开始编译FFmpeg需要编译可调试的ffplay,所以编译选项需要带上 enable-ffplay 和 enable-debug。最终的编译指令如下: 12345// 第一步./configure --enable-debug --disable-optimizations --disable-asm --enable-ffplay// 第二步 (-j8 表示并行编译使用的线 ...
重新更新
Created2023-09-27
今天(2023-09-27)重新开始更新,先从换个主题开始 butterfly
iOS上使用Cocos2d-x和OpenGL ES绘制凹多边形
Created2018-03-26|iOS
前言先看看在iPhone上使用Cocos2d-x与OpenGL ES绘制出来的最终效果。 图中绘制的都是圆环,或者光滑曲线构成的图形。不过本质还是绘制多边形,只要这些多边形的顶点足够多,那么就可以形成光滑的曲线。 在绘制过程中使用到的相关知识点: Cocos2d-x渲染机制 OpenGL ES绘图基础 Objectice-C与C++混编 OpenGL Tessellation将多边形切分成多个三角形 问题的发现在使用Cococs2d-x绘制填充颜色的多边形的时候,最先想到的就是使用DrawNode 。DrawNode提供以下接口: 12// 绘制填充颜色的多边形,参数包括:多边形顶点坐标,定点数,以及需要填充的颜色void drawSolidPoly(const Vec2 *poli, unsigned int numberOfPoints, const Color4F &color); 使用该接口绘制一个四分之一圆环的时候,想达到的效果如下👇 但是实际的效果却是这样的👇 查看源码查看Cocos2d-x的DrawNode的源码:CCDrawNode.cpp ...
ARKit下的魔方
Created2017-12-02|iOS
前言如题,先看看效果👇 代码在我的Github,运行起来,在手势检测上还有些不够精准。有兴趣的可以一起讨论 参考 Awesome ARKit
一次秋招
Created2017-12-02
如题,记录一下辛苦的秋招 秋招结束有一段时间了。感谢今年良好的整体环境,我也拿了大大小小几个offer,最后选择了腾讯的iOS开发岗位。 从七月中旬开始正式准备算起,到10月初确定下来,一共有2个半月时间吧。 7月中旬看书,刷题 7月底内推开始,一来就是阿里和腾讯,直接一波两连跪,心情跌倒谷底=。= 开始找不足,发现iOS方面知识还算应付的过来;缺的是计算机基础知识,赶紧补一补本科的数据结构,计算机网络和操作系统 8月夹杂着各种内推面试,总算熟悉了各家的面试套路。问来问去都差不多那些东西 9.3号,今日头条内推视频面试,一下午面了三面。跟杰哥去吃饭的时候接到了hr的电话,说已经通过了。假装平静的跟hr小姐姐聊完之后,就开始激动的和杰哥噼里啪啦的讲起来了。信心大增。 之后就只面了些大厂,问的问题都大同小异。说说其中腾讯的面试吧,腾讯二面,就持续了20分钟,全程就像聊天。气氛轻松的让我以为我已经挂了。。。 9月底陆续收到了几份offer,十一之后收到了腾讯的offer。 另外,回顾这两个多月的秋招,大部分公司面试体验都是很好的。其中今日头条给我的感觉是最好的:三 ...
CALayer的时间坐标系
Created2017-07-24|iOS
前言上周末,又进行了一次实验室内部的iOS分享会。这次是小学弟给我们讲的CAMediaTiming以及Runloop的一些内容。讲的很细,也很深=。= 其中提到了一点:CALayer的时间坐标系,也就是本文要讲的主要内容 时间坐标系时间坐标系这个名字听着有点奇怪,类似layer的空间坐标系。它的意思是:每个CALyer都有自己的时间刻度;在同一个全局时间下,每个CALyer自己的时间是可以不一样的。而CAAnimation参照的时间则是他所属的CALyer的时间系。 CAMediaTimingCAMediaTiming是一个协议,定义了beginTime,timeOffset,speed等属性。CALayer以及CAAnimation都实现了该协议。 在CALayer中设置CAMediaTiming的相关属性是用来更改CALyer的时间系,也就是改变每一时刻的CALyer的时间。而在CAAnimation中设置这些属性,则是为了修改动画的相关时间属性;这些时间属性都是对应相应的layer的时间系的。 CALayer的时间如何计算 t = (tp - b ...
OC关联对象及其内存管理
Created2017-07-14|iOS
前言OC的关联对象经常被用来存储Category中的属性对应的实例变量,当然它还有其他的用途。 这篇文章将讨论关联对象是如何实现的,以及关联对象的内存管理问题。 Demo先用一段代码来引入要讲的东西: 1234567891011121314151617181920212223242526272829303132#import "HCBase.h"@interface HCBase (vanney)@property (nonatomic, assign) int cui;@property (nonatomic, strong) NSString *van;@end/* ----------------- 这里是分割线 -------------- */#import "HCBase+vanney.h"@implementation HCBase (vanney)- (void)setCui:(int)cui { objc_setAssociatedObject(self, "cui", @(cui), ...
ARC下关于autorelease的一些疑问
Created2017-07-13|iOS
前言今天在看黑幕背后的Autorelease这篇博客的时候,发现了一些问题。主要问题在于: 123456// ARC 情况下@autoreleasepool { id __strong array = [NSMutableArray array]; NSLog(@"array count is %lu", _objc_rootRetainCount(array)); _objc_autoreleasePoolPrint();} 这里的array对象的retainCount到底是1还是2? 按照查找的博客,以及之前看的《Objective-C高级编程 iOS与OS X多线程和内存管理》这本书的结论:这里的retainCount应该是1,因为这个对象没有注册到autoreleasepool中。但是实际运行下来却并非如此。 Stack Overflow AutoreleaseAutoreleasePool 自动释放池Autorelease就是延迟release的调用时间,将需要延迟release的对象加入autoreleasepool。当p ...
JSPatch源码分析
Created2017-07-07|iOS
前言JSPatch是一个可以动态更新iOS APP的开源库。通过JSPatch,可以使用JS书写原生代码,动态更新APP,替换项目原生代码修复Bug。 JSPatch充分应用了Objective-C的runtime,来实现自己的功能。 这篇文章将结合Demo,来分析JSPatch的主要的实现过程。包括: 使用JS新建类 使用JS替换原有方法 使用JS添加全新方法 OC调用JS定义的方法 JS调用OC定义的方法 Demo使用官方提供的Demo。先来看看Demo的关键代码: JPViewController12345678910111213141516@implementation JPViewController- (void)viewDidLoad { [super viewDidLoad]; UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(0, 100, [UIScreen mainScreen].bounds.size.width, 50)]; [btn setTitle:@& ...
关于ARC,Block以及GCD,runloop
Created2017-06-27|iOS
前言最近又看了一遍 Objective-C高级编程 iOS与OS X多线程和内存管理 这本书。对一些问题有了一些新的认识。这篇文章将讲讲下面几个话题: ARC,MRC 与 引用计数 Block的实现 GCD与runloop ARC, MRC 与 引用计数引用计数Objective C的生成的数据会存放在栈或者堆上面。对于存放在栈上面的数据(比如局部int变量等)在不需要时,系统会自动释放内存空间;对于存放在堆上面的数据(比如对象等)会使用引用计数来决定是否释放内存空间。 创建一个对象时,会malloc一块对象所需大小的内存空间;当有一变量持有该对象时(一般是有一指针指向该内存时)该对象的引用计数加一;当持有该对象的变量不再持有它时(一般是指针被销毁,或指向其他地方)该对象的引用计数减一。当对象的引用计数为0时,free这一块内存 MRC和ARC实质上都是对这个引用计数进行操作 手动引用计数 MRC手动引用计数要确保在对象从被创建到销毁的一生中,该对象的引用计数也从1变成0。 与对象引用计数相关的函数只有3个: alloc/new/copy/mut ...
12…6
avatar
vanney
记录一些生活的点滴
Articles
57
Tags
1
Categories
5
Follow Me
Announcement
This is my Blog
Recent Post
FFmpeg源码调试2023-10-07
重新更新2023-09-27
iOS上使用Cocos2d-x和OpenGL ES绘制凹多边形2018-03-26
ARKit下的魔方2017-12-02
一次秋招2017-12-02
Categories
  • FFmpeg1
  • iOS30
  • server2
  • 杂七杂八9
  • 读书笔记13
Tags
杂七杂八
Archives
  • October 20231
  • September 20231
  • March 20181
  • December 20172
  • July 20174
  • June 20179
  • April 20173
  • March 20175
Info
Article :
57
UV :
PV :
Last Push :
©2020 - 2023 By vanney
Framework Hexo|Theme Butterfly