diff options
author | Tuomas Virtanen <katajakasa@gmail.com> | 2016-01-14 04:22:02 +0200 |
---|---|---|
committer | Tuomas Virtanen <katajakasa@gmail.com> | 2016-01-14 04:22:02 +0200 |
commit | fb8b8f3b6b8b1905a3811ef3a6c396d0f3dc26a6 (patch) | |
tree | 0ed689179645fcde899f52e30fab4988891e2e7a /examples | |
parent | 28e4719f81e84b54e397970d09a85accd2d35543 (diff) |
Add seeking
Diffstat (limited to 'examples')
-rw-r--r-- | examples/example_audio.c | 6 | ||||
-rw-r--r-- | examples/example_video.c | 94 |
2 files changed, 42 insertions, 58 deletions
diff --git a/examples/example_audio.c b/examples/example_audio.c index 7066951..1701017 100644 --- a/examples/example_audio.c +++ b/examples/example_audio.c @@ -51,7 +51,11 @@ int main(int argc, char *argv[]) { return 1; } - Kit_Init(KIT_INIT_FORMATS|KIT_INIT_NETWORK); + err = Kit_Init(KIT_INIT_FORMATS|KIT_INIT_NETWORK); + if(err != 0) { + fprintf(stderr, "Unable to initialize Kitchensink: %s", Kit_GetError()); + return 1; + } // Open up the sourcefile. src = Kit_CreateSourceFromUrl(filename); diff --git a/examples/example_video.c b/examples/example_video.c index 4a405cd..f469b6a 100644 --- a/examples/example_video.c +++ b/examples/example_video.c @@ -12,58 +12,6 @@ #define AUDIOBUFFER_SIZE (16384) -const char *stream_types[] = { - "KIT_STREAMTYPE_UNKNOWN", - "KIT_STREAMTYPE_VIDEO", - "KIT_STREAMTYPE_AUDIO", - "KIT_STREAMTYPE_DATA", - "KIT_STREAMTYPE_SUBTITLE", - "KIT_STREAMTYPE_ATTACHMENT" -}; - -const char* get_tex_type(unsigned int type) { - switch(type) { - case SDL_PIXELFORMAT_UNKNOWN: return "SDL_PIXELFORMAT_UNKNOWN"; - case SDL_PIXELFORMAT_INDEX1LSB: return "SDL_PIXELFORMAT_INDEX1LSB"; - case SDL_PIXELFORMAT_INDEX1MSB: return "SDL_PIXELFORMAT_INDEX1MSB"; - case SDL_PIXELFORMAT_INDEX4LSB: return "SDL_PIXELFORMAT_INDEX4LSB"; - case SDL_PIXELFORMAT_INDEX4MSB: return "SDL_PIXELFORMAT_INDEX4MSB"; - case SDL_PIXELFORMAT_INDEX8: return "SDL_PIXELFORMAT_INDEX8"; - case SDL_PIXELFORMAT_RGB332: return "SDL_PIXELFORMAT_RGB332"; - case SDL_PIXELFORMAT_RGB444: return "SDL_PIXELFORMAT_RGB444"; - case SDL_PIXELFORMAT_RGB555: return "SDL_PIXELFORMAT_RGB555"; - case SDL_PIXELFORMAT_BGR555: return "SDL_PIXELFORMAT_BGR555"; - case SDL_PIXELFORMAT_ARGB4444: return "SDL_PIXELFORMAT_ARGB4444"; - case SDL_PIXELFORMAT_RGBA4444: return "SDL_PIXELFORMAT_RGBA4444"; - case SDL_PIXELFORMAT_ABGR4444: return "SDL_PIXELFORMAT_ABGR4444"; - case SDL_PIXELFORMAT_BGRA4444: return "SDL_PIXELFORMAT_BGRA4444"; - case SDL_PIXELFORMAT_ARGB1555: return "SDL_PIXELFORMAT_ARGB1555"; - case SDL_PIXELFORMAT_RGBA5551: return "SDL_PIXELFORMAT_RGBA5551"; - case SDL_PIXELFORMAT_ABGR1555: return "SDL_PIXELFORMAT_ABGR1555"; - case SDL_PIXELFORMAT_BGRA5551: return "SDL_PIXELFORMAT_BGRA5551"; - case SDL_PIXELFORMAT_RGB565: return "SDL_PIXELFORMAT_RGB565"; - case SDL_PIXELFORMAT_BGR565: return "SDL_PIXELFORMAT_BGR565"; - case SDL_PIXELFORMAT_RGB24: return "SDL_PIXELFORMAT_RGB24"; - case SDL_PIXELFORMAT_BGR24: return "SDL_PIXELFORMAT_BGR24"; - case SDL_PIXELFORMAT_RGB888: return "SDL_PIXELFORMAT_RGB888"; - case SDL_PIXELFORMAT_RGBX8888: return "SDL_PIXELFORMAT_RGBX8888"; - case SDL_PIXELFORMAT_BGR888: return "SDL_PIXELFORMAT_BGR888"; - case SDL_PIXELFORMAT_BGRX8888: return "SDL_PIXELFORMAT_BGRX8888"; - case SDL_PIXELFORMAT_ARGB8888: return "SDL_PIXELFORMAT_ARGB8888"; - case SDL_PIXELFORMAT_RGBA8888: return "SDL_PIXELFORMAT_RGBA8888"; - case SDL_PIXELFORMAT_ABGR8888: return "SDL_PIXELFORMAT_ABGR8888"; - case SDL_PIXELFORMAT_BGRA8888: return "SDL_PIXELFORMAT_BGRA8888"; - case SDL_PIXELFORMAT_ARGB2101010: return "SDL_PIXELFORMAT_ARGB2101010"; - case SDL_PIXELFORMAT_YV12: return "SDL_PIXELFORMAT_YV12"; - case SDL_PIXELFORMAT_IYUV: return "SDL_PIXELFORMAT_IYUV"; - case SDL_PIXELFORMAT_YUY2: return "SDL_PIXELFORMAT_YUY2"; - case SDL_PIXELFORMAT_UYVY: return "SDL_PIXELFORMAT_UYVY"; - case SDL_PIXELFORMAT_YVYU: return "SDL_PIXELFORMAT_YVYU"; - default: - return "unknown"; - } -} - int main(int argc, char *argv[]) { int err = 0, ret = 0; const char* filename = NULL; @@ -94,16 +42,34 @@ int main(int argc, char *argv[]) { // Init SDL err = SDL_Init(SDL_INIT_VIDEO|SDL_INIT_AUDIO); + if(err != 0) { + fprintf(stderr, "Unable to initialize SDL2!\n"); + return 1; + } + + // Create a resizable window. window = SDL_CreateWindow("Example Player", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 1280, 720, SDL_WINDOW_RESIZABLE); + if(window == NULL) { + fprintf(stderr, "Unable to create a new window!\n"); + return 1; + } + + // Create an accelerated renderer. Enable vsync, so we don't need to play around with SDL_Delay. renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED|SDL_RENDERER_PRESENTVSYNC); - Kit_Init(KIT_INIT_FORMATS|KIT_INIT_NETWORK); + if(window == NULL) { + fprintf(stderr, "Unable to create a renderer!\n"); + return 1; + } - if(err != 0 || window == NULL || renderer == NULL) { - fprintf(stderr, "Unable to initialize SDL!\n"); + // Initialize Kitchensink with network support and all formats. + err = Kit_Init(KIT_INIT_FORMATS|KIT_INIT_NETWORK); + if(err != 0) { + fprintf(stderr, "Unable to initialize Kitchensink: %s", Kit_GetError()); return 1; } // Open up the sourcefile. + // This can be a local file, network url, ... src = Kit_CreateSourceFromUrl(filename); if(src == NULL) { fprintf(stderr, "Unable to load file '%s': %s\n", filename, Kit_GetError()); @@ -119,7 +85,7 @@ int main(int argc, char *argv[]) { fprintf(stderr, "Unable to fetch stream #%d information: %s.\n", i, Kit_GetError()); return 1; } - fprintf(stderr, " * Stream #%d: %s\n", i, stream_types[sinfo.type]); + fprintf(stderr, " * Stream #%d: %s\n", i, Kit_GetKitStreamTypeString(sinfo.type)); } // Create the player @@ -151,6 +117,7 @@ int main(int argc, char *argv[]) { pinfo.vcodec_name, pinfo.video.width, pinfo.video.height); + fprintf(stderr, "Duration: %f seconds\n", Kit_GetPlayerDuration(player)); // Init audio SDL_memset(&wanted_spec, 0, sizeof(wanted_spec)); @@ -160,8 +127,11 @@ int main(int argc, char *argv[]) { audio_dev = SDL_OpenAudioDevice(NULL, 0, &wanted_spec, &audio_spec, 0); SDL_PauseAudioDevice(audio_dev, 0); + // Print some format info + fprintf(stderr, "Texture type: %s\n", Kit_GetSDLPixelFormatString(pinfo.video.format)); + fprintf(stderr, "Audio format: %s\n", Kit_GetSDLAudioFormatString(pinfo.audio.format)); + // Initialize texture - fprintf(stderr, "Texture type: %s\n", get_tex_type(pinfo.video.format)); SDL_Texture *tex = SDL_CreateTexture( renderer, pinfo.video.format, @@ -203,6 +173,16 @@ int main(int argc, char *argv[]) { if(event.key.keysym.sym == SDLK_e) { Kit_PlayerStop(player); } + if(event.key.keysym.sym == SDLK_RIGHT) { + if(Kit_PlayerSeek(player, 10.0) != 0) { + fprintf(stderr, "%s\n", Kit_GetError()); + } + } + if(event.key.keysym.sym == SDLK_LEFT) { + if(Kit_PlayerSeek(player, -10.0) != 0) { + fprintf(stderr, "%s\n", Kit_GetError()); + } + } break; case SDL_QUIT: run = false; |