Skip to content

Instantly share code, notes, and snippets.

View prabindh's full-sized avatar
💭
I may be slow to respond.

Prabindh Sundareson prabindh

💭
I may be slow to respond.
View GitHub Profile
@prabindh
prabindh / ffmpeg.sh
Created June 3, 2021 11:10
FFMPEG commands for multimedia operations, streaming, and interop with CUDA/OpenGL
#Creating SBS (side by side) videos:
ffmpeg -i input_file -i input_file2 -filter_complex hstack -vcodec libx264 -b:v 30M -vsync 0 output.mp4
#MP4 from raw YUV
ffmpeg -f rawvideo -vcodec rawvideo -s 1920x1080 -pix_fmt yuv420p -i input.yuv -c:v libx264 -preset slow -qp 0 -vsync 0 -pix_fmt nv12 output.mp4
#Scaling:
@prabindh
prabindh / dirlist_creator.py
Created May 4, 2019 02:56
Create directory listing tree in python and output in JSON
import os
import json
def path_to_dict(path):
d = {'name': os.path.basename(path)}
if os.path.isdir(path):
d['type'] = "directory"
d['children'] = [path_to_dict(os.path.join(path,x)) for x in os.listdir\
(path)]
else:
@prabindh
prabindh / visual-studio-code-conda.sh
Last active June 24, 2021 12:24
Run visual studio code in Conda environment. Allows python debugging
Debugging with vscode and conda python:
- Install vs code
- Follow https://medium.com/analytics-vidhya/efficient-way-to-activate-conda-in-vscode-ef21c4c231f2 to add conda terminal to vs code via launch.json. Args have to be added like
"args": ["--aa=2", "--ab=1", "--sm", "--input=asd.img"]
- Close vscode
-- open conda prompt, activate required environment via conda activate myEnv
- launch vscode from the command prompt, using "code"
@prabindh
prabindh / libcurl-static.cpp
Created March 30, 2021 06:54
Building C++ application with static libcurl
//Building C++ application with static build of libcurl:
/*
1. In the project, C++ preprocessor to be defined - "CURL_STATICLIB"
2. CURL itself should be built with:
- static option
- SSL static
- IPV6 static
- SSPI static
@prabindh
prabindh / log.txt
Created April 11, 2020 14:00
Log of cudf installation in colab - failure
using cudf instead of Pandas
(Add -y for conda install rapidsai channel as below, else it waits for input)
!wget -c https://repo.continuum.io/archive/Anaconda3-5.1.0-Linux-x86_64.sh
!chmod +x Anaconda3-5.1.0-Linux-x86_64.sh
!bash ./Anaconda3-5.1.0-Linux-x86_64.sh -b -f -p /usr/local
!conda install -y -c rapidsai -c nvidia -c numba -c conda-forge \
cudf=0.13 python=3.6 cudatoolkit=10.1
import cudf
@prabindh
prabindh / encode-video.cpp
Created July 28, 2020 03:41
calling ffmpeg encoder
#define OUTPUT_W 1920
#define OUTPUT_H 1080
#define OUTPUT_FPS 25
int main()
{
int ret = 0;
bool bUseHW = false;
bool bNv = false;
Encoder* pEnc = new Encoder(bUseHW, bNv, OUTPUT_W, OUTPUT_H, OUTPUT_FPS);
@prabindh
prabindh / ffmpeg-log.cpp
Created July 28, 2020 07:11
FFMPEG logging
// av_log_set_callback(ffmpeg_avcodec_log);
static void ffmpeg_avcodec_log(void *ptr, int val, const char * msg, va_list
ap)
{
AVClass* avc = ptr ? *(AVClass**)ptr : NULL;
FILE *flog = fopen("stream-receiver.log", "a");
if (avc)
{
@prabindh
prabindh / eglimage_cuda.cpp
Created July 27, 2020 12:56
eglimage cuda
// Create a texture and register it for sharing with CUDA.
int setup_external_texture_oes(nengl_ws* ws, void* window)
{
int isSupported = -1;
isSupported = ws->check_extension("EGL_KHR_gl_texture_2D_image");
isSupported = ws->check_extension("GL_OES_EGL_image_external");
constexpr GLsizei texSize = 32;
GLubyte data[texSize * texSize * 4];
GLuint mSourceTexture, mExternalTexture;
@prabindh
prabindh / use-vbo-cuda.cpp
Created July 24, 2020 13:11
Use vbo with cuda
GLuint positionsVBO;
struct cudaGraphicsResource* positionsVBO_CUDA;
int main() {
// Explicitly set device
cudaGLSetGLDevice(0);
// Initialize OpenGL and GLUT
...
glutDisplayFunc(display);
@prabindh
prabindh / ffmpeg-encoder3.cpp
Created July 23, 2020 13:10
encode using vaapi
// from https://stackoverflow.com/questions/59666753/encode-video-from-c-using-libavcodec-and-vaapi
#ifndef ENCODER_H
#define ENCODER_H
#include <cassert>
extern "C" {
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#include <libavutil/opt.h>