From f9f301e7a1f6086591ff799771f987987a2c1ba1 Mon Sep 17 00:00:00 2001 From: "Sergey Semyonov (Serge)" Date: Wed, 27 Jan 2016 14:43:42 +0000 Subject: [PATCH] Fplay: update git-svn-id: svn://kolibrios.org@6106 a494cfbc-eb01-0410-851d-a64ba20cac60 --- contrib/media/fplay/Makefile | 2 +- contrib/media/fplay/audio.c | 33 +++----------- contrib/media/fplay/fplay.c | 6 --- contrib/media/fplay/fplay.h | 4 -- contrib/media/fplay/utils.c | 84 ------------------------------------ contrib/media/fplay/video.c | 27 +++--------- 6 files changed, 11 insertions(+), 145 deletions(-) diff --git a/contrib/media/fplay/Makefile b/contrib/media/fplay/Makefile index 05b1ed27d4..4849da0e0b 100644 --- a/contrib/media/fplay/Makefile +++ b/contrib/media/fplay/Makefile @@ -14,7 +14,7 @@ ARFLAG = crs SDK_DIR:= $(abspath ../../sdk) LIB_DIR:= $(SDK_DIR)/lib -INCLUDES= -I. -I$(SDK_DIR)/sources/newlib/libc/include -I$(SDK_DIR)/sources/ffmpeg +INCLUDES= -I. -I$(SDK_DIR)/sources/newlib/libc/include -I$(SDK_DIR)/sources/ffmpeg-2.5 INCLUDES+=-I$(SDK_DIR)/sources/freetype/include #-I$(SDK_DIR)/sources/vaapi/libva-1.4.1 diff --git a/contrib/media/fplay/audio.c b/contrib/media/fplay/audio.c index 43d7d7bc08..a2b0781db6 100644 --- a/contrib/media/fplay/audio.c +++ b/contrib/media/fplay/audio.c @@ -1,11 +1,12 @@ #include -#include -#include -#include "libswresample/swresample.h" - #include #include +#include +#include +#include +#include + #include "winlib/winlib.h" #include "sound.h" #include "fplay.h" @@ -40,19 +41,12 @@ int init_audio(int format) int version =-1; char *errstr; - mutex_lock(&driver_lock); - if((err = InitSound(&version)) !=0 ) { - mutex_unlock(&driver_lock); errstr = "Sound service not installed\n\r"; goto exit_whith_error; }; - mutex_unlock(&driver_lock); - -// printf("sound version 0x%x\n", version); - if( (SOUND_VERSION>(version&0xFFFF)) || (SOUND_VERSION<(version >> 16))) { @@ -106,15 +100,12 @@ int decode_audio(AVCodecContext *ctx, queue_t *qa) int got_frame; int data_size; - if( astream.count > 192000*2) return -1; if( get_packet(qa, &pkt) == 0 ) return 0; - // __asm__("int3"); - if (!aFrame) { if (!(aFrame = avcodec_alloc_frame())) @@ -128,8 +119,6 @@ int decode_audio(AVCodecContext *ctx, queue_t *qa) { data_size = 192000; -// len = avcodec_decode_audio3(ctx,(int16_t*)decoder_buffer, -// &data_size, &pkt_tmp); got_frame = 0; len = avcodec_decode_audio4(ctx, aFrame, &got_frame, &pkt_tmp); @@ -200,19 +189,7 @@ int decode_audio(AVCodecContext *ctx, queue_t *qa) samples = astream.buffer+astream.count; memcpy(samples, decoder_buffer, data_size); -/* - memcpy(samples, aFrame->extended_data[0], plane_size); - if (planar && ctx->channels > 1) - { - uint8_t *out = ((uint8_t *)samples) + plane_size; - for (ch = 1; ch < ctx->channels; ch++) - { - memcpy(out, aFrame->extended_data[ch], plane_size); - out += plane_size; - } - } -*/ astream.count += data_size; mutex_unlock(&astream.lock); }; diff --git a/contrib/media/fplay/fplay.c b/contrib/media/fplay/fplay.c index 9994de87eb..ace44ef3e8 100644 --- a/contrib/media/fplay/fplay.c +++ b/contrib/media/fplay/fplay.c @@ -51,7 +51,6 @@ int64_t rewind_pos; int64_t stream_duration; int threads_running = DECODER_THREAD; -mutex_t driver_lock; extern double audio_base; @@ -110,11 +109,8 @@ int main( int argc, char *argv[]) } else movie_file = file_name; -// __asm__ __volatile__("int3"); - stream_duration = pFormatCtx->duration; - printf("duration %f\n", (double)stream_duration); // Find the first video stream videoStream=-1; audioStream=-1; @@ -172,7 +168,6 @@ int main( int argc, char *argv[]) // printf("ctx->pix_fmt %d\n", pCodecCtx->pix_fmt); - mutex_init(&driver_lock); mutex_init(&q_video.lock); mutex_init(&q_audio.lock); @@ -245,7 +240,6 @@ int main( int argc, char *argv[]) if(astream.lock.handle) mutex_destroy(&astream.lock); - mutex_destroy(&driver_lock); mutex_destroy(&q_video.lock); mutex_destroy(&q_audio.lock); diff --git a/contrib/media/fplay/fplay.h b/contrib/media/fplay/fplay.h index 5bb40aa97f..b81bdf2825 100644 --- a/contrib/media/fplay/fplay.h +++ b/contrib/media/fplay/fplay.h @@ -124,10 +124,6 @@ int decode_audio(AVCodecContext *ctx, queue_t *qa); double get_master_clock(void); - -int create_thread(int (*proc)(void *param), void *param, int stack_size); - - static inline void GetNotify(void *event) { __asm__ __volatile__ ( diff --git a/contrib/media/fplay/utils.c b/contrib/media/fplay/utils.c index d8a998233e..89a0a2bd9c 100644 --- a/contrib/media/fplay/utils.c +++ b/contrib/media/fplay/utils.c @@ -10,86 +10,6 @@ extern uint32_t hw2d ; -#if 0 -#define FUTEX_INIT 0 -#define FUTEX_DESTROY 1 -#define FUTEX_WAIT 2 -#define FUTEX_WAKE 3 - -int __fastcall mutex_init(mutex_t *mutex) -{ - unsigned int handle; - - mutex->lock = 0; - - asm volatile( - "int $0x40\t" - :"=a"(handle) - :"a"(77),"b"(FUTEX_INIT),"c"(mutex)); - mutex->handle = handle; - - return handle; -}; - -int __fastcall mutex_destroy(mutex_t *mutex) -{ - int retval; - - asm volatile( - "int $0x40\t" - :"=a"(retval) - :"a"(77),"b"(FUTEX_DESTROY),"c"(mutex->handle)); - - return retval; -}; - -#define exchange_acquire(ptr, new) \ - __atomic_exchange_4((ptr), (new), __ATOMIC_ACQUIRE) - -#define exchange_release(ptr, new) \ - __atomic_exchange_4((ptr), (new), __ATOMIC_RELEASE) - -void __fastcall mutex_lock(mutex_t *mutex) -{ - int tmp; - - if( __sync_fetch_and_add(&mutex->lock, 1) == 0) - return; - - while (exchange_acquire (&mutex->lock, 2) != 0) - { - asm volatile( - "int $0x40\t" - :"=a"(tmp) - :"a"(77),"b"(FUTEX_WAIT), - "c"(mutex->handle),"d"(2),"S"(0)); - } -} - -int __fastcall mutex_trylock (mutex_t *mutex) -{ - int zero = 0; - - return __atomic_compare_exchange_4(&mutex->lock, &zero, 1,0,__ATOMIC_ACQUIRE,__ATOMIC_RELAXED); -} - -void __fastcall mutex_unlock(mutex_t *mutex) -{ - int prev; - - prev = exchange_release (&mutex->lock, 0); - - if (prev != 1) - { - asm volatile( - "int $0x40\t" - :"=a"(prev) - :"a"(77),"b"(FUTEX_WAKE), - "c"(mutex->handle),"d"(1)); - }; -}; -#endif - int64_t _lseeki64(int fd, int64_t offset, int origin ) { int off = offset; @@ -100,10 +20,6 @@ int put_packet(queue_t *q, AVPacket *pkt) { AVPacketList *q_pkt; - /* duplicate the packet */ -// if (av_dup_packet(pkt) < 0) -// return -1; - q_pkt = av_malloc(sizeof(AVPacketList)); if (!q_pkt) return -1; diff --git a/contrib/media/fplay/video.c b/contrib/media/fplay/video.c index 96ee467be6..b9c713df7f 100644 --- a/contrib/media/fplay/video.c +++ b/contrib/media/fplay/video.c @@ -4,11 +4,12 @@ #include #include #include -#include -#include "winlib/winlib.h" -#include -#include "fplay.h" #include +#include +#include + +#include "winlib/winlib.h" +#include "fplay.h" int fplay_blit_bitmap(bitmap_t *bitmap, int dst_x, int dst_y,int w, int h); void draw_va_picture(render_t *render, AVPicture *picture); @@ -71,7 +72,6 @@ int init_video(AVCodecContext *ctx) width = ctx->width; height = ctx->height; - Frame = avcodec_alloc_frame(); if ( Frame == NULL ) { @@ -83,9 +83,6 @@ int init_video(AVCodecContext *ctx) { int ret; -// printf("alloc picture %d %d %x\n", -// ctx->width, ctx->height, ctx->pix_fmt ); - ret = avpicture_alloc(&frames[i].picture, ctx->pix_fmt, ctx->width, ctx->height); if ( ret != 0 ) @@ -152,12 +149,6 @@ int decode_video(AVCodecContext *ctx, queue_t *qv) else pts= 0; -// pts = *(int64_t*)av_opt_ptr(avcodec_get_frame_class(), -// Frame, "best_effort_timestamp"); - -// if (pts == AV_NOPTS_VALUE) -// pts = 0; - pts *= av_q2d(video_time_base); dst_pic = &frames[dfx].picture; @@ -167,7 +158,6 @@ int decode_video(AVCodecContext *ctx, queue_t *qv) Frame->linesize, ctx->pix_fmt, ctx->width, ctx->height); frames[dfx].pts = pts*1000.0; -// printf("pts %f\n", frames[dfx].pts); frames[dfx].ready = 1; @@ -205,8 +195,6 @@ static void player_stop() decoder_state = PLAY_2_STOP; sound_state = PLAY_2_STOP; render_draw_client(main_render); -// printf("stop player\n"); - }; int MainWindowProc(ctrl_t *ctrl, uint32_t msg, uint32_t arg1, uint32_t arg2) @@ -353,7 +341,6 @@ int MainWindowProc(ctrl_t *ctrl, uint32_t msg, uint32_t arg1, uint32_t arg2) rewind_pos = (prg->max - prg->min)*prg->pos/prg->ctrl.w; -// printf("progress action pos: %d time: %f\n", prg->pos, (double)rewind_pos); player_state = REWIND; decoder_state = REWIND; sound_state = PLAY_2_STOP; @@ -379,10 +366,8 @@ int MainWindowProc(ctrl_t *ctrl, uint32_t msg, uint32_t arg1, uint32_t arg2) int level; peak = sld->min + sld->pos * (sld->max - sld->min)/(96); -// level = (log2(peak+16384)*10000.0)/15 - 10000; level = peak; -// printf("level %d\n", level); set_audio_volume(level, level); send_message(&sld->ctrl, MSG_PAINT, 0, 0); win->panel.lvl->vol = level; @@ -621,9 +606,7 @@ render_t *create_render(window_t *win, AVCodecContext *ctx, uint32_t flags) render->ctx_height = ctx->height; render->ctx_format = ctx->pix_fmt; - mutex_lock(&driver_lock); render->caps = pxInit(1); - mutex_unlock(&driver_lock); right = win->w; bottom = win->h-CAPTION_HEIGHT-PANEL_HEIGHT;