if (ret >= 0) {
AVRational tb = (AVRational){1, frame->sample_rate};
if (frame->pts != AV_NOPTS_VALUE)
- frame->pts = av_rescale_q(frame->pts, av_codec_get_pkt_timebase(d->avctx), tb);
+ frame->pts = av_rescale_q(frame->pts, d->avctx->pkt_timebase, tb);
else if (d->next_pts != AV_NOPTS_VALUE)
frame->pts = av_rescale_q(d->next_pts, d->next_pts_tb, tb);
if (frame->pts != AV_NOPTS_VALUE) {
{
Uint32 format;
int access, w, h;
- if (SDL_QueryTexture(*texture, &format, &access, &w, &h) < 0 || new_width != w || new_height != h || new_format != format) {
+ if (!*texture || SDL_QueryTexture(*texture, &format, &access, &w, &h) < 0 || new_width != w || new_height != h || new_format != format) {
void *pixels;
int pitch;
- SDL_DestroyTexture(*texture);
+ if (*texture)
+ SDL_DestroyTexture(*texture);
if (!(*texture = SDL_CreateTexture(renderer, new_format, SDL_TEXTUREACCESS_STREAMING, new_width, new_height)))
return -1;
if (SDL_SetTextureBlendMode(*texture, blendmode) < 0)
SDL_DestroyRenderer(renderer);
if (window)
SDL_DestroyWindow(window);
- av_lockmgr_register(NULL);
uninit_opts();
#if CONFIG_AVFILTER
av_freep(&vfilters_list);
ret = avcodec_parameters_to_context(avctx, ic->streams[stream_index]->codecpar);
if (ret < 0)
goto fail;
- av_codec_set_pkt_timebase(avctx, ic->streams[stream_index]->time_base);
+ avctx->pkt_timebase = ic->streams[stream_index]->time_base;
codec = avcodec_find_decoder(avctx->codec_id);
if (forced_codec_name) av_log(NULL, AV_LOG_WARNING,
"No codec could be found with name '%s'\n", forced_codec_name);
else av_log(NULL, AV_LOG_WARNING,
- "No codec could be found with id %d\n", avctx->codec_id);
+ "No decoder could be found for codec %s\n", avcodec_get_name(avctx->codec_id));
ret = AVERROR(EINVAL);
goto fail;
}
avctx->codec_id = codec->id;
- if(stream_lowres > av_codec_get_max_lowres(codec)){
+ if (stream_lowres > codec->max_lowres) {
av_log(avctx, AV_LOG_WARNING, "The maximum value for lowres supported by the decoder is %d\n",
- av_codec_get_max_lowres(codec));
- stream_lowres = av_codec_get_max_lowres(codec);
+ codec->max_lowres);
+ stream_lowres = codec->max_lowres;
}
- av_codec_set_lowres(avctx, stream_lowres);
+ avctx->lowres = stream_lowres;
if (fast)
avctx->flags2 |= AV_CODEC_FLAG2_FAST;
)
return 1;
- if(s->pb && ( !strncmp(s->filename, "rtp:", 4)
- || !strncmp(s->filename, "udp:", 4)
+ if(s->pb && ( !strncmp(s->url, "rtp:", 4)
+ || !strncmp(s->url, "udp:", 4)
)
)
return 1;
ret = avformat_seek_file(is->ic, -1, seek_min, seek_target, seek_max, is->seek_flags);
if (ret < 0) {
av_log(NULL, AV_LOG_ERROR,
- "%s: error while seeking\n", is->ic->filename);
+ "%s: error while seeking\n", is->ic->url);
} else {
if (is->audio_stream >= 0) {
packet_queue_flush(&is->audioq);
refresh_loop_wait_event(cur_stream, &event);
switch (event.type) {
case SDL_KEYDOWN:
- if (exit_on_keydown) {
+ if (exit_on_keydown || event.key.keysym.sym == SDLK_ESCAPE || event.key.keysym.sym == SDLK_q) {
do_exit(cur_stream);
break;
}
+ // If we don't yet have a window, skip all key events, because read_thread might still be initializing...
+ if (!cur_stream->width)
+ continue;
switch (event.key.keysym.sym) {
- case SDLK_ESCAPE:
- case SDLK_q:
- do_exit(cur_stream);
- break;
case SDLK_f:
toggle_full_screen(cur_stream);
cur_stream->force_refresh = 1;
);
}
-static int lockmgr(void **mtx, enum AVLockOp op)
-{
- switch(op) {
- case AV_LOCK_CREATE:
- *mtx = SDL_CreateMutex();
- if(!*mtx) {
- av_log(NULL, AV_LOG_FATAL, "SDL_CreateMutex(): %s\n", SDL_GetError());
- return 1;
- }
- return 0;
- case AV_LOCK_OBTAIN:
- return !!SDL_LockMutex(*mtx);
- case AV_LOCK_RELEASE:
- return !!SDL_UnlockMutex(*mtx);
- case AV_LOCK_DESTROY:
- SDL_DestroyMutex(*mtx);
- return 0;
- }
- return 1;
-}
-
/* Called from the main */
int main(int argc, char **argv)
{
#if CONFIG_AVDEVICE
avdevice_register_all();
#endif
-#if CONFIG_AVFILTER
- avfilter_register_all();
-#endif
- av_register_all();
avformat_network_init();
init_opts();
SDL_EventState(SDL_SYSWMEVENT, SDL_IGNORE);
SDL_EventState(SDL_USEREVENT, SDL_IGNORE);
- if (av_lockmgr_register(lockmgr)) {
- av_log(NULL, AV_LOG_FATAL, "Could not initialize lock manager!\n");
- do_exit(NULL);
- }
-
av_init_packet(&flush_pkt);
flush_pkt.data = (uint8_t *)&flush_pkt;