在Qt上使用SDL2绘制QWidget 2019-07-09

在Qt上使用SDL2绘制QWidget

// 方案主要是绘图部分使用 SDL 进行绘制,窗口部分使用 Qt ...
// 该案例中还有很多需要优化的部分 ... 
// 比如:SDL_CreateRenderer 不需要反复创建 ...
// 比如:不需要 SDL_CreateTextureFromSurface 反复装转到纹理
// 比如:不需要反复释放 Renderer 和 Texture ...
// 但是该 SDL 与 Qt 结合的方案还是有很多可借鉴的地方 ...
通过SDL2的SDL_CreateWindowFrom函数将QWidget转换为SDL_Window

    SDL_Window *window = SDL_CreateWindowFrom((void*)this->winId())

Qrencode生成二维码并通过SDL显示 2019-07-09

Qrencode生成二维码并通过SDL显示

主要是在各种PI上面通过SDL显示二维码 ...
// 安装 
apt-get install libqrencode-dev // 会自动关联安装 libqrencode
// 这些都是摘抄于官方源码包中 ...
https://github.com/fukuchi/libqrencode
https://github.com/fukuchi/libqrencode/blob/master/tests/view_qrcode.c

树莓派之在VC4的KMS上使用Wayland方案 2019-06-08

树莓派之在VC4的KMS上使用Wayland方案

说明:经过测试可以的只有 Raspberry 3B+,Raspberry Zero / 3A+ 经过测试都不行 ...
说明:本文内容摘自网上,有修改,在我的环境中经过测试,有效 ...
测试环境:
    Raspberry 3B+
2019-04-08-raspbian-stretch-lite.img

准备工作:
# enable Broadcom VC4 driver 
$ sudo raspi-config
Advanced Options -> GL Driver -> GL (Full KMS)  

Rockchip之FFmpeg通过MPP硬解并转储 2019-05-31

Rockchip之FFmpeg通过MPP硬解并转储

// Rockchip Linux 官方网站 
https://github.com/rockchip-linux

// Rockchip 支持硬件
RK29XX/RK30XX/RK31XX
RK3288/RK3368/RK3399
RK3228/RK3229/RK3228H/RK3328
RV1108/RV1107

// Media Process Platform (MPP) module
https://github.com/rockchip-linux/mpp

// FFmpeg 使用 4.1 版本(此时最新)
http://ffmpeg.org/

树莓派之通过代理翻墙更新 2019-04-20

树莓派之通过代理翻墙更新

准备工作 ...
Windows 10 翻墙环境比如:蓝灯,无界等 
ccproxy 代理软件
局域网内树莓派一个
第一步:打开无界确认Win10已经可以翻墙 ...
第二步:打开 ccproxy 设置代理 ...
第三步:设置代理 export http_proxy=http://192.168.1.8:808
第四步:更新 apt-get update

Linux之通过udev规则指定网络设备 2019-04-11

Linux之通过udev规则指定网络设备

sudo udevadm control --reload // 任何规则文件及相关脚本修改后都需要执行 ...
// 查询udev数据库中的设备信息
udevadm info -a -p /sys/class/net/eth0


// 获取到的设备信息 ...
looking at device '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.1/1-1.1.1/1-1.1.1:1.0/net/eth0':
KERNEL=="eth0"
SUBSYSTEM=="net"
DRIVER==""
ATTR{addr_assign_type}=="0"
ATTR{addr_len}=="6"
ATTR{address}=="b8:27:eb:a7:c3:e6"
ATTR{broadcast}=="ff:ff:ff:ff:ff:ff"
ATTR{carrier}=="0"
ATTR{carrier_changes}=="1"
ATTR{dev_id}=="0x0"
ATTR{dev_port}=="0"
ATTR{dormant}=="0"
ATTR{duplex}=="half"
ATTR{flags}=="0x1003"
ATTR{gro_flush_timeout}=="0"
ATTR{ifalias}==""
ATTR{ifindex}=="2"
ATTR{iflink}=="2"
ATTR{link_mode}=="0"
ATTR{mtu}=="1500"
ATTR{netdev_group}=="0"
ATTR{operstate}=="down"
ATTR{proto_down}=="0"
ATTR{speed}=="10"
ATTR{tx_queue_len}=="1000"
ATTR{type}=="1"

树莓派之编译与定制OMXPlayer 2019-04-03

树莓派之编译与定制OMXPlayer

下载源码

https://github.com/popcornmix/omxplayer

Build FFmepg

树莓派之hello_video循环播放视频 2019-01-09

树莓派之hello_video循环播放视频

// Video deocode demo using OpenMAX IL though the ilcient helper library

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "bcm_host.h"
#include "ilclient.h"

static int video_decode_test(char *filename)
{
   OMX_VIDEO_PARAM_PORTFORMATTYPE format;
   OMX_TIME_CONFIG_CLOCKSTATETYPE cstate;
   COMPONENT_T *video_decode = NULL, *video_scheduler = NULL, *video_render = NULL, *clock = NULL;
   COMPONENT_T *list[5];
   TUNNEL_T tunnel[4];
   ILCLIENT_T *client;
   FILE *in;
   int status = 0;
   unsigned int data_len = 0;

SDL2之stb_image代替sdl2_image方法 2019-01-09

SDL2之stb_image代替sdl2_image方法

// https://www.libsdl.org/projects/SDL_image/
// 常用的 SDL Image 加载图片一般这样 ...
SDL_Surface * image = IMG_Load("/home/danoo/aaa.png");
// 使用 stb image 代替 sdl image 不再需要安装三方库
// 直接把 stb_image.h 文件导入到项目中即可使用 ...
https://github.com/nulijiabei/stb/blob/master/stb_image.h
// 同时也是官方推荐 ...
// https://wiki.libsdl.org/SDL_CreateRGBSurfaceFrom

树莓派之自定义开机启动画面 2018-12-26

树莓派之自定义开机启动画面

// 我的系统版本
root@raspberrypi:~# lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 9.4 (stretch)
Release:    9.4
Codename:   stretch
// 准备工作
// 1. 禁用颜色测试
/boot/config.txt 中添加 disable_splash=1
// 2. 禁用角落 LOGO
/boot/cmdline.txt 中添加 logo.nologo