diff options
author | Tuomas Virtanen <katajakasa@gmail.com> | 2016-01-16 17:55:06 +0200 |
---|---|---|
committer | Tuomas Virtanen <katajakasa@gmail.com> | 2016-01-16 17:57:00 +0200 |
commit | 90f295b584a4c4396d054e25b266791796d17965 (patch) | |
tree | 8044d12764ade60cbdd9d321f637418759fff2c8 | |
parent | 20bfdbb781575fd6ee3c6e8624a09e314b65a162 (diff) |
Audio & video example fixes
-rw-r--r-- | examples/example_video.c | 29 | ||||
-rw-r--r-- | src/kitplayer.c | 20 |
2 files changed, 29 insertions, 20 deletions
diff --git a/examples/example_video.c b/examples/example_video.c index 49725d2..327a9b0 100644 --- a/examples/example_video.c +++ b/examples/example_video.c @@ -140,21 +140,25 @@ int main(int argc, char *argv[]) { } fprintf(stderr, "Media information:\n"); - fprintf(stderr, " * Audio: %s (%s), %dHz, %dch, %db, %s\n", - pinfo.acodec, - pinfo.acodec_name, - pinfo.audio.samplerate, - pinfo.audio.channels, - pinfo.audio.bytes, - pinfo.audio.is_signed ? "signed" : "unsigned"); + if(pinfo.audio.is_enabled) { + fprintf(stderr, " * Audio: %s (%s), %dHz, %dch, %db, %s\n", + pinfo.acodec, + pinfo.acodec_name, + pinfo.audio.samplerate, + pinfo.audio.channels, + pinfo.audio.bytes, + pinfo.audio.is_signed ? "signed" : "unsigned"); + } fprintf(stderr, " * Video: %s (%s), %dx%d\n", pinfo.vcodec, pinfo.vcodec_name, pinfo.video.width, pinfo.video.height); - fprintf(stderr, " * Subtitle: %s (%s)\n", - pinfo.vcodec, - pinfo.vcodec_name); + if(pinfo.subtitle.is_enabled) { + fprintf(stderr, " * Subtitle: %s (%s)\n", + pinfo.scodec, + pinfo.scodec_name); + } fprintf(stderr, "Duration: %f seconds\n", Kit_GetPlayerDuration(player)); // Init audio @@ -208,20 +212,25 @@ int main(int argc, char *argv[]) { run = false; } if(event.key.keysym.sym == SDLK_q) { + // Start or unpause the video Kit_PlayerPlay(player); } if(event.key.keysym.sym == SDLK_w) { + // Pause playback Kit_PlayerPause(player); } if(event.key.keysym.sym == SDLK_e) { + // Stop playback (will close the window) Kit_PlayerStop(player); } if(event.key.keysym.sym == SDLK_RIGHT) { + // Skip 10 seconds forwards or to the end of the file if(Kit_PlayerSeek(player, 10.0) != 0) { fprintf(stderr, "%s\n", Kit_GetError()); } } if(event.key.keysym.sym == SDLK_LEFT) { + // Seek 10 seconds backwards or to the start of the file if(Kit_PlayerSeek(player, -10.0) != 0) { fprintf(stderr, "%s\n", Kit_GetError()); } diff --git a/src/kitplayer.c b/src/kitplayer.c index f8fb2fc..7d5ddd5 100644 --- a/src/kitplayer.c +++ b/src/kitplayer.c @@ -215,11 +215,11 @@ static enum AVPixelFormat _FindAVPixelFormat(unsigned int fmt) { } } -static enum AVSampleFormat _FindAVSampleFormat(int bytes) { - switch(bytes) { - case 1: return AV_SAMPLE_FMT_U8; - case 2: return AV_SAMPLE_FMT_S16; - case 3: return AV_SAMPLE_FMT_S32; +static enum AVSampleFormat _FindAVSampleFormat(int format) { + switch(format) { + case AUDIO_U8: return AV_SAMPLE_FMT_U8; + case AUDIO_S16SYS: return AV_SAMPLE_FMT_S16; + case AUDIO_S32SYS: return AV_SAMPLE_FMT_S32; default: return AV_SAMPLE_FMT_NONE; } @@ -381,7 +381,7 @@ static void _HandleAudioPacket(Kit_Player *player, AVPacket *packet) { &dst_linesize, player->aformat.channels, dst_nb_samples, - _FindAVSampleFormat(player->aformat.bytes), + _FindAVSampleFormat(player->aformat.format), 0); len2 = swr_convert( @@ -395,7 +395,7 @@ static void _HandleAudioPacket(Kit_Player *player, AVPacket *packet) { &dst_linesize, player->aformat.channels, len2, - _FindAVSampleFormat(player->aformat.bytes), 1); + _FindAVSampleFormat(player->aformat.format), 1); // Get pts double pts = 0; @@ -602,7 +602,7 @@ Kit_Player* Kit_CreatePlayer(const Kit_Source *src) { player->swr = swr_alloc_set_opts( NULL, _FindAVChannelLayout(player->aformat.channels), // Target channel layout - _FindAVSampleFormat(player->aformat.bytes), // Target fmt + _FindAVSampleFormat(player->aformat.format), // Target fmt player->aformat.samplerate, // Target samplerate acodec_ctx->channel_layout, // Source channel layout acodec_ctx->sample_fmt, // Source fmt @@ -1013,8 +1013,8 @@ void Kit_GetPlayerInfo(const Kit_Player *player, Kit_PlayerInfo *info) { memcpy(&info->video, &player->vformat, sizeof(Kit_VideoFormat)); } if(scodec_ctx != NULL) { - strncpy(info->scodec, scodec_ctx->codec->name, KIT_CODECMAX); - strncpy(info->scodec_name, scodec_ctx->codec->long_name, KIT_CODECNAMEMAX); + strncpy(info->scodec, scodec_ctx->codec->name, KIT_CODECMAX-1); + strncpy(info->scodec_name, scodec_ctx->codec->long_name, KIT_CODECNAMEMAX-1); memcpy(&info->subtitle, &player->sformat, sizeof(Kit_SubtitleFormat)); } } |