diff --git a/generic-pc/audio.cpp b/generic-pc/audio.cpp index adb5ff2..8b3ae48 100644 --- a/generic-pc/audio.cpp +++ b/generic-pc/audio.cpp @@ -54,7 +54,8 @@ static cAudio *gThiz = NULL; static ao_device *adevice = NULL; static ao_sample_format sformat; -static AVCodecContext *c= NULL; +static AVCodecContext *c = NULL; +static AVCodecParameters *p = NULL; cAudio::cAudio(void *, void *, void *) { @@ -356,28 +357,31 @@ void cAudio::run() lt_info("%s: nb_streams: %d, should be 1!\n", __func__, avfc->nb_streams); goto out; } - if (avfc->streams[0]->codec->codec_type != AVMEDIA_TYPE_AUDIO) - lt_info("%s: stream 0 no audio codec? 0x%x\n", __func__, avfc->streams[0]->codec->codec_type); + p = avfc->streams[0]->codecpar; + if (p->codec_type != AVMEDIA_TYPE_AUDIO) + lt_info("%s: stream 0 no audio codec? 0x%x\n", __func__, p->codec_type); - c = avfc->streams[0]->codec; - codec = avcodec_find_decoder(c->codec_id); + codec = avcodec_find_decoder(p->codec_id); if (!codec) { - lt_info("%s: Codec for %s not found\n", __func__, avcodec_get_name(c->codec_id)); + lt_info("%s: Codec for %s not found\n", __func__, avcodec_get_name(p->codec_id)); goto out; } + if (c) + av_free(c); + c = avcodec_alloc_context3(codec); if (avcodec_open2(c, codec, NULL) < 0) { lt_info("%s: avcodec_open2() failed\n", __func__); goto out; } frame = av_frame_alloc(); if (!frame) { - lt_info("%s: avcodec_alloc_frame failed\n", __func__); + lt_info("%s: av_frame_alloc failed\n", __func__); goto out2; } /* output sample rate, channels, layout could be set here if necessary */ - o_ch = c->channels; /* 2 */ - o_sr = c->sample_rate; /* 48000 */ - o_layout = c->channel_layout; /* AV_CH_LAYOUT_STEREO */ + o_ch = p->channels; /* 2 */ + o_sr = p->sample_rate; /* 48000 */ + o_layout = p->channel_layout; /* AV_CH_LAYOUT_STEREO */ if (sformat.channels != o_ch || sformat.rate != o_sr || sformat.byte_format != AO_FMT_NATIVE || sformat.bits != 16 || adevice == NULL) { @@ -405,10 +409,10 @@ void cAudio::run() #endif av_get_sample_fmt_string(tmp, sizeof(tmp), c->sample_fmt); lt_info("decoding %s, sample_fmt %d (%s) sample_rate %d channels %d\n", - avcodec_get_name(c->codec_id), c->sample_fmt, tmp, c->sample_rate, c->channels); + avcodec_get_name(p->codec_id), c->sample_fmt, tmp, p->sample_rate, p->channels); swr = swr_alloc_set_opts(swr, o_layout, AV_SAMPLE_FMT_S16, o_sr, /* output */ - c->channel_layout, c->sample_fmt, c->sample_rate, /* input */ + p->channel_layout, c->sample_fmt, p->sample_rate, /* input */ 0, NULL); if (! swr) { lt_info("could not alloc resample context\n"); @@ -422,15 +426,15 @@ void cAudio::run() avcodec_decode_audio4(c, frame, &gotframe, &avpkt); if (gotframe && thread_started) { int out_linesize; - obuf_sz = av_rescale_rnd(swr_get_delay(swr, c->sample_rate) + - frame->nb_samples, o_sr, c->sample_rate, AV_ROUND_UP); + obuf_sz = av_rescale_rnd(swr_get_delay(swr, p->sample_rate) + + frame->nb_samples, o_sr, p->sample_rate, AV_ROUND_UP); if (obuf_sz > obuf_sz_max) { lt_info("obuf_sz: %d old: %d\n", obuf_sz, obuf_sz_max); av_free(obuf); if (av_samples_alloc(&obuf, &out_linesize, o_ch, frame->nb_samples, AV_SAMPLE_FMT_S16, 1) < 0) { lt_info("av_samples_alloc failed\n"); - av_free_packet(&avpkt); + av_packet_unref(&avpkt); break; /* while (thread_started) */ } obuf_sz_max = obuf_sz; @@ -443,7 +447,7 @@ void cAudio::run() obuf_sz, AV_SAMPLE_FMT_S16, 1); ao_play(adevice, (char *)obuf, o_buf_sz); } - av_free_packet(&avpkt); + av_packet_unref(&avpkt); } // ao_close(adevice); /* can take long :-( */ av_free(obuf); @@ -452,6 +456,7 @@ void cAudio::run() av_frame_free(&frame); out2: avcodec_close(c); + av_free(c); c = NULL; out: avformat_close_input(&avfc); diff --git a/generic-pc/video.cpp b/generic-pc/video.cpp index bf54a27..8723940 100644 --- a/generic-pc/video.cpp +++ b/generic-pc/video.cpp @@ -30,6 +30,7 @@ extern "C" { #include +#include #include } @@ -79,10 +80,12 @@ cVideo::cVideo(int, void *, void *, unsigned int) buf_in = 0; buf_out = 0; pig_x = pig_y = pig_w = pig_h = 0; + pig_changed = false; display_aspect = DISPLAY_AR_16_9; display_crop = DISPLAY_AR_MODE_LETTERBOX; v_format = VIDEO_FORMAT_MPEG2; output_h = 0; + stillpicture = false; } cVideo::~cVideo(void) @@ -163,6 +166,18 @@ int cVideo::setBlank(int) return 1; } +int cVideo::GetVideoSystem() +{ + int current_video_system = VIDEO_STD_1080I50; + + if(dec_w < 720) + current_video_system = VIDEO_STD_PAL; + else if(dec_w > 720 && dec_w <= 1280) + current_video_system = VIDEO_STD_720P50; + + return current_video_system; +} + int cVideo::SetVideoSystem(int system, bool) { int h; @@ -196,25 +211,13 @@ int cVideo::SetVideoSystem(int system, bool) lt_info("%s: unhandled value %d\n", __func__, system); return 0; } - v_std = (VIDEO_STD) system; +// v_std = (VIDEO_STD) system; output_h = h; if (display_aspect < DISPLAY_AR_RAW && output_h > 0) /* don't know what to do with this */ glfb->setOutputFormat(aspect_ratios[display_aspect], output_h, display_crop); return 0; } -int cVideo::GetVideoSystem() -{ - int current_video_system = VIDEO_STD_1080I50; - - if(dec_w < 720) - current_video_system = VIDEO_STD_PAL; - else if(dec_w > 720 && dec_w <= 1280) - current_video_system = VIDEO_STD_720P50; - - return 0; -} - int cVideo::getPlayState(void) { return VIDEO_PLAYING; @@ -224,11 +227,17 @@ void cVideo::SetVideoMode(analog_mode_t) { } -void cVideo::ShowPicture(const char *fname, const char *) +void cVideo::ShowPicture(const char *fname) { lt_info("%s(%s)\n", __func__, fname); if (access(fname, R_OK)) return; + still_m.lock(); + stillpicture = true; + buf_num = 0; + buf_in = 0; + buf_out = 0; + still_m.unlock(); unsigned int i; int stream_id = -1; @@ -236,6 +245,7 @@ void cVideo::ShowPicture(const char *fname, const char *) int len; AVFormatContext *avfc = NULL; AVCodecContext *c = NULL; + AVCodecParameters *p = NULL; AVCodec *codec; AVFrame *frame, *rgbframe; AVPacket avpkt; @@ -250,17 +260,18 @@ void cVideo::ShowPicture(const char *fname, const char *) goto out_close; } for (i = 0; i < avfc->nb_streams; i++) { - if (avfc->streams[i]->codec->codec_type == AVMEDIA_TYPE_VIDEO) { + if (avfc->streams[i]->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) { stream_id = i; break; } } if (stream_id < 0) goto out_close; - c = avfc->streams[stream_id]->codec; - codec = avcodec_find_decoder(c->codec_id); - if (!avcodec_open2(c, codec, NULL) < 0) { - lt_info("%s: Could not find/open the codec, id 0x%x\n", __func__, c->codec_id); + p = avfc->streams[stream_id]->codecpar; + codec = avcodec_find_decoder(p->codec_id); + c = avcodec_alloc_context3(codec); + if (avcodec_open2(c, codec, NULL) < 0) { + lt_info("%s: Could not find/open the codec, id 0x%x\n", __func__, p->codec_id); goto out_close; } frame = av_frame_alloc(); @@ -277,15 +288,15 @@ void cVideo::ShowPicture(const char *fname, const char *) len = avcodec_decode_video2(c, frame, &got_frame, &avpkt); if (len < 0) { lt_info("%s: avcodec_decode_video2 %d\n", __func__, len); - av_free_packet(&avpkt); + av_packet_unref(&avpkt); goto out_free; } if (avpkt.size > len) lt_info("%s: WARN: pkt->size %d != len %d\n", __func__, avpkt.size, len); if (got_frame) { - unsigned int need = avpicture_get_size(PIX_FMT_RGB32, c->width, c->height); + unsigned int need = av_image_get_buffer_size(AV_PIX_FMT_RGB32, c->width, c->height, 1); struct SwsContext *convert = sws_getContext(c->width, c->height, c->pix_fmt, - c->width, c->height, PIX_FMT_RGB32, + c->width, c->height, AV_PIX_FMT_RGB32, SWS_BICUBIC, 0, 0, 0); if (!convert) lt_info("%s: ERROR setting up SWS context\n", __func__); @@ -294,8 +305,8 @@ void cVideo::ShowPicture(const char *fname, const char *) SWFramebuffer *f = &buffers[buf_in]; if (f->size() < need) f->resize(need); - avpicture_fill((AVPicture *)rgbframe, &(*f)[0], PIX_FMT_RGB32, - c->width, c->height); + av_image_fill_arrays(rgbframe->data, rgbframe->linesize, &(*f)[0], AV_PIX_FMT_RGB32, + c->width, c->height, 1); sws_scale(convert, frame->data, frame->linesize, 0, c->height, rgbframe->data, rgbframe->linesize); sws_freeContext(convert); @@ -308,7 +319,7 @@ void cVideo::ShowPicture(const char *fname, const char *) buf_in %= VDEC_MAXBUFS; buf_num++; if (buf_num > (VDEC_MAXBUFS - 1)) { - lt_debug("%s: buf_num overflow\n", __func__); + lt_info("%s: buf_num overflow\n", __func__); buf_out++; buf_out %= VDEC_MAXBUFS; buf_num--; @@ -316,9 +327,10 @@ void cVideo::ShowPicture(const char *fname, const char *) buf_m.unlock(); } } - av_free_packet(&avpkt); + av_packet_unref(&avpkt); out_free: avcodec_close(c); + av_free(c); av_frame_free(&frame); av_frame_free(&rgbframe); out_close: @@ -328,6 +340,10 @@ void cVideo::ShowPicture(const char *fname, const char *) void cVideo::StopPicture() { + lt_info("%s\n", __func__); + still_m.lock(); + stillpicture = false; + still_m.unlock(); } void cVideo::Standby(unsigned int) @@ -351,7 +367,32 @@ void cVideo::getPictureInfo(int &width, int &height, int &rate) { width = dec_w; height = dec_h; - rate = dec_r; + switch (dec_r) { + case 23://23.976fps + rate = VIDEO_FRAME_RATE_23_976; + break; + case 24: + rate = VIDEO_FRAME_RATE_24; + break; + case 25: + rate = VIDEO_FRAME_RATE_25; + break; + case 29://29,976fps + rate = VIDEO_FRAME_RATE_29_97; + break; + case 30: + rate = VIDEO_FRAME_RATE_30; + break; + case 50: + rate = VIDEO_FRAME_RATE_50; + break; + case 60: + rate = VIDEO_FRAME_RATE_60; + break; + default: + rate = dec_r; + break; + } } void cVideo::SetSyncMode(AVSYNC_TYPE) @@ -407,6 +448,7 @@ void cVideo::run(void) { lt_info("====================== start decoder thread ================================\n"); AVCodec *codec; + AVCodecParameters *p = NULL; AVCodecContext *c= NULL; AVFormatContext *avfc = NULL; AVInputFormat *inp; @@ -447,20 +489,21 @@ void cVideo::run(void) lt_info("%s: nb_streams %d, should be 1 => retry\n", __func__, avfc->nb_streams); if (av_read_frame(avfc, &avpkt) < 0) lt_info("%s: av_read_frame < 0\n", __func__); - av_free_packet(&avpkt); + av_packet_unref(&avpkt); if (! thread_running) goto out; } - if (avfc->streams[0]->codec->codec_type != AVMEDIA_TYPE_VIDEO) - lt_info("%s: no video codec? 0x%x\n", __func__, avfc->streams[0]->codec->codec_type); + p = avfc->streams[0]->codecpar; + if (p->codec_type != AVMEDIA_TYPE_VIDEO) + lt_info("%s: no video codec? 0x%x\n", __func__, p->codec_type); - c = avfc->streams[0]->codec; - codec = avcodec_find_decoder(c->codec_id); + codec = avcodec_find_decoder(p->codec_id); if (!codec) { - lt_info("%s: Codec for %s not found\n", __func__, avcodec_get_name(c->codec_id)); + lt_info("%s: Codec for %s not found\n", __func__, avcodec_get_name(p->codec_id)); goto out; } + c = avcodec_alloc_context3(codec); if (avcodec_open2(c, codec, NULL) < 0) { lt_info("%s: Could not open codec\n", __func__); goto out; @@ -488,16 +531,17 @@ void cVideo::run(void) lt_info("%s: avcodec_decode_video2 %d\n", __func__, len); warn_d = time(NULL); } - av_free_packet(&avpkt); + av_packet_unref(&avpkt); continue; } if (avpkt.size > len) lt_info("%s: WARN: pkt->size %d != len %d\n", __func__, avpkt.size, len); - if (got_frame) { - unsigned int need = avpicture_get_size(PIX_FMT_RGB32, c->width, c->height); + still_m.lock(); + if (got_frame && ! stillpicture) { + unsigned int need = av_image_get_buffer_size(AV_PIX_FMT_RGB32, c->width, c->height, 1); convert = sws_getCachedContext(convert, c->width, c->height, c->pix_fmt, - c->width, c->height, PIX_FMT_RGB32, + c->width, c->height, AV_PIX_FMT_RGB32, SWS_BICUBIC, 0, 0, 0); if (!convert) lt_info("%s: ERROR setting up SWS context\n", __func__); @@ -506,8 +550,8 @@ void cVideo::run(void) SWFramebuffer *f = &buffers[buf_in]; if (f->size() < need) f->resize(need); - avpicture_fill((AVPicture *)rgbframe, &(*f)[0], PIX_FMT_RGB32, - c->width, c->height); + av_image_fill_arrays(rgbframe->data, rgbframe->linesize, &(*f)[0], AV_PIX_FMT_RGB32, + c->width, c->height, 1); sws_scale(convert, frame->data, frame->linesize, 0, c->height, rgbframe->data, rgbframe->linesize); if (dec_w != c->width || dec_h != c->height) { @@ -521,6 +565,8 @@ void cVideo::run(void) f->height(c->height); int64_t vpts = av_frame_get_best_effort_timestamp(frame); if (v_format == VIDEO_FORMAT_MPEG2) + vpts += 90000*4/10; /* 400ms */ + else vpts += 90000*3/10; /* 300ms */ f->pts(vpts); AVRational a = av_guess_sample_aspect_ratio(avfc, avfc->streams[0], frame); @@ -529,7 +575,7 @@ void cVideo::run(void) buf_in %= VDEC_MAXBUFS; buf_num++; if (buf_num > (VDEC_MAXBUFS - 1)) { - lt_debug("%s: buf_num overflow\n", __func__); + lt_info("%s: buf_num overflow\n", __func__); buf_out++; buf_out %= VDEC_MAXBUFS; buf_num--; @@ -540,12 +586,15 @@ void cVideo::run(void) lt_debug("%s: time_base: %d/%d, ticks: %d rate: %d pts 0x%" PRIx64 "\n", __func__, c->time_base.num, c->time_base.den, c->ticks_per_frame, dec_r, av_frame_get_best_effort_timestamp(frame)); - } - av_free_packet(&avpkt); + } else + lt_info("%s: got_frame: %d stillpicture: %d\n", __func__, got_frame, stillpicture); + still_m.unlock(); + av_packet_unref(&avpkt); } sws_freeContext(convert); out2: avcodec_close(c); + av_free(c); av_frame_free(&frame); av_frame_free(&rgbframe); out: @@ -554,35 +603,59 @@ void cVideo::run(void) av_free(pIOCtx); /* reset output buffers */ bufpos = 0; - buf_num = 0; - buf_in = 0; - buf_out = 0; + still_m.lock(); + if (!stillpicture) { + buf_num = 0; + buf_in = 0; + buf_out = 0; + } + still_m.unlock(); lt_info("======================== end decoder thread ================================\n"); } -static bool swscale(unsigned char *src, unsigned char *dst, int sw, int sh, int dw, int dh) +static bool swscale(unsigned char *src, unsigned char *dst, int sw, int sh, int dw, int dh, AVPixelFormat sfmt) { bool ret = false; + int len = 0; struct SwsContext *scale = NULL; - AVFrame *sframe, *dframe; - scale = sws_getCachedContext(scale, sw, sh, PIX_FMT_RGB32, dw, dh, PIX_FMT_RGB32, SWS_BICUBIC, 0, 0, 0); + scale = sws_getCachedContext(scale, sw, sh, sfmt, dw, dh, AV_PIX_FMT_RGB32, SWS_BICUBIC, 0, 0, 0); if (!scale) { lt_info_c("%s: ERROR setting up SWS context\n", __func__); - return false; + return ret; } - sframe = av_frame_alloc(); - dframe = av_frame_alloc(); - if (!sframe || !dframe) { + AVFrame *sframe = av_frame_alloc(); + AVFrame *dframe = av_frame_alloc(); + if (sframe && dframe) { + len = av_image_fill_arrays(sframe->data, sframe->linesize, &(src)[0], sfmt, sw, sh, 1); + if(len>-1) + ret = true; + + if(ret && (len = av_image_fill_arrays(dframe->data, dframe->linesize, &(dst)[0], AV_PIX_FMT_RGB32, dw, dh, 1)<0)) + ret = false; + + if(ret && (len = sws_scale(scale, sframe->data, sframe->linesize, 0, sh, dframe->data, dframe->linesize)<0)) + ret = false; + else + ret = true; + }else{ lt_info_c("%s: could not alloc sframe (%p) or dframe (%p)\n", __func__, sframe, dframe); - goto out; + ret = false; } - avpicture_fill((AVPicture *)sframe, &(src[0]), PIX_FMT_RGB32, sw, sh); - avpicture_fill((AVPicture *)dframe, &(dst[0]), PIX_FMT_RGB32, dw, dh); - sws_scale(scale, sframe->data, sframe->linesize, 0, sh, dframe->data, dframe->linesize); - out: - av_frame_free(&sframe); - av_frame_free(&dframe); - sws_freeContext(scale); + + if(sframe){ + av_frame_free(&sframe); + sframe = NULL; + } + if(dframe){ + av_frame_free(&dframe); + dframe = NULL; + } + if(scale){ + sws_freeContext(scale); + scale = NULL; + } + lt_info_c("%s: %s scale %ix%i to %ix%i ,len %i\n",ret?" ":"ERROR",__func__, sw, sh, dw, dh,len); + return ret; } @@ -613,24 +686,40 @@ bool cVideo::GetScreenImage(unsigned char * &data, int &xres, int &yres, bool ge xres = vid_w * a.num / a.den; } } + if(video.empty()){ + get_video=false; + xres = osd_w; + yres = osd_h; + } if (get_osd) osd = glfb->getOSDBuffer(); - unsigned int need = avpicture_get_size(PIX_FMT_RGB32, xres, yres); + unsigned int need = av_image_get_buffer_size(AV_PIX_FMT_RGB32, xres, yres, 1); data = (unsigned char *)realloc(data, need); /* will be freed by caller */ if (data == NULL) /* out of memory? */ return false; if (get_video) { - if (vid_w != xres || vid_h != yres) /* scale video into data... */ - swscale(&video[0], data, vid_w, vid_h, xres, yres); - else /* get_video and no fancy scaling needed */ + //memcpy dont work with copy BGR24 to RGB32 + if (vid_w != xres || vid_h != yres){ /* scale video into data... */ + bool ret = swscale(&video[0], data, vid_w, vid_h, xres, yres, AV_PIX_FMT_RGB32); + if(!ret){ + free(data); + return false; + } + //memcpy dont work with copy BGR24 to RGB32 + } else { /* get_video and no fancy scaling needed */ memcpy(data, &video[0], xres * yres * sizeof(uint32_t)); + } } if (get_osd && (osd_w != xres || osd_h != yres)) { /* rescale osd */ s_osd.resize(need); - swscale(&(*osd)[0], &s_osd[0], osd_w, osd_h, xres, yres); + bool ret = swscale(&(*osd)[0], &s_osd[0], osd_w, osd_h, xres, yres,AV_PIX_FMT_RGB32); + if(!ret){ + free(data); + return false; + } osd = &s_osd; } diff --git a/generic-pc/video_lib.h b/generic-pc/video_lib.h index e48aa71..832574d 100644 --- a/generic-pc/video_lib.h +++ b/generic-pc/video_lib.h @@ -157,8 +157,8 @@ class cVideo : public Thread /* aspect ratio */ int getAspectRatio(void); - void getPictureInfo(int &width, int &height, int &rate); int setAspectRatio(int aspect, int mode); + void getPictureInfo(int &width, int &height, int &rate); /* cropping mode */ int setCroppingMode(int x = 0 /*vidDispMode_t x = VID_DISPMODE_NORM*/); @@ -170,20 +170,22 @@ class cVideo : public Thread int getBlank(void); int setBlank(int enable); + /* set video_system */ + int SetVideoSystem(int video_system, bool remember = true); + int GetVideoSystem(); + /* change video play state. Parameters are all unused. */ int Start(void *PcrChannel = NULL, unsigned short PcrPid = 0, unsigned short VideoPid = 0, void *x = NULL); int Stop(bool blank = true); bool Pause(void); - /* set video_system */ - int SetVideoSystem(int video_system, bool remember = true); - int GetVideoSystem(); int SetStreamType(VIDEO_FORMAT type); + void ShowPicture(const char * fname); + void SetSyncMode(AVSYNC_TYPE mode); bool SetCECMode(VIDEO_HDMI_CEC_MODE) { return true; }; void SetCECAutoView(bool) { return; }; void SetCECAutoStandby(bool) { return; }; - void ShowPicture(const char * fname, const char * destname = NULL); void StopPicture(); void Standby(unsigned int bOn); void Pig(int x, int y, int w, int h, int osd_w = 1064, int osd_h = 600, int startx = 0, int starty = 0, int endx = 1279, int endy = 719); @@ -218,6 +220,9 @@ class cVideo : public Thread int pig_y; int pig_w; int pig_h; + bool pig_changed; + Mutex still_m; + bool stillpicture; }; #endif diff --git a/libarmbox/audio.cpp b/libarmbox/audio.cpp index 8064633..79470a5 100644 --- a/libarmbox/audio.cpp +++ b/libarmbox/audio.cpp @@ -200,10 +200,11 @@ int cAudio::PrepareClipPlay(int ch, int srate, int bits, int little_endian) const char *mix_dev = getenv("MIX_DEVICE"); lt_debug("%s ch %d srate %d bits %d le %d\n", __FUNCTION__, ch, srate, bits, little_endian); if (clipfd > -1) { - lt_info("%s: clipfd already opened (%d)\n", __FUNCTION__, clipfd); + lt_info("%s: clipfd already opened (%d)\n", __func__, clipfd); return -1; } mixer_num = -1; + mixer_fd = -1; /* a different DSP device can be given with DSP_DEVICE and MIX_DEVICE * if this device cannot be opened, we fall back to the internal OSS device * Example: @@ -215,7 +216,7 @@ int cAudio::PrepareClipPlay(int ch, int srate, int bits, int little_endian) if ((!dsp_dev) || (access(dsp_dev, W_OK))) { if (dsp_dev) lt_info("%s: DSP_DEVICE is set (%s) but cannot be opened," - " fall back to /dev/dsp\n", __func__, dsp_dev); + " fall back to /dev/dsp\n", __func__, dsp_dev); dsp_dev = "/dev/dsp"; } if ((!mix_dev) || (access(mix_dev, W_OK))) { diff --git a/libarmbox/playback_gst.cpp b/libarmbox/playback_gst.cpp index 6007a67..4d380be 100644 --- a/libarmbox/playback_gst.cpp +++ b/libarmbox/playback_gst.cpp @@ -52,18 +52,18 @@ extern cAudio * audioDecoder; typedef enum { - GST_PLAY_FLAG_VIDEO = (1 << 0), - GST_PLAY_FLAG_AUDIO = (1 << 1), - GST_PLAY_FLAG_TEXT = (1 << 2), - GST_PLAY_FLAG_VIS = (1 << 3), - GST_PLAY_FLAG_SOFT_VOLUME = (1 << 4), - GST_PLAY_FLAG_NATIVE_AUDIO = (1 << 5), - GST_PLAY_FLAG_NATIVE_VIDEO = (1 << 6), - GST_PLAY_FLAG_DOWNLOAD = (1 << 7), - GST_PLAY_FLAG_BUFFERING = (1 << 8), - GST_PLAY_FLAG_DEINTERLACE = (1 << 9), - GST_PLAY_FLAG_SOFT_COLORBALANCE = (1 << 10), - GST_PLAY_FLAG_FORCE_FILTERS = (1 << 11), + GST_PLAY_FLAG_VIDEO = (1 << 0), + GST_PLAY_FLAG_AUDIO = (1 << 1), + GST_PLAY_FLAG_TEXT = (1 << 2), + GST_PLAY_FLAG_VIS = (1 << 3), + GST_PLAY_FLAG_SOFT_VOLUME = (1 << 4), + GST_PLAY_FLAG_NATIVE_AUDIO = (1 << 5), + GST_PLAY_FLAG_NATIVE_VIDEO = (1 << 6), + GST_PLAY_FLAG_DOWNLOAD = (1 << 7), + GST_PLAY_FLAG_BUFFERING = (1 << 8), + GST_PLAY_FLAG_DEINTERLACE = (1 << 9), + GST_PLAY_FLAG_SOFT_COLORBALANCE = (1 << 10), + GST_PLAY_FLAG_FORCE_FILTERS = (1 << 11), } GstPlayFlags; diff --git a/libarmbox/video.cpp b/libarmbox/video.cpp index 83d4a09..56bf050 100644 --- a/libarmbox/video.cpp +++ b/libarmbox/video.cpp @@ -351,7 +351,7 @@ void cVideo::closeDevice(void) { lt_debug("%s\n", __func__); /* looks like sometimes close is unhappy about non-empty buffers */ - Start(); +// Start(); if (fd >= 0) close(fd); fd = -1; @@ -602,6 +602,8 @@ void cVideo::StopPicture() lt_debug("%s\n", __func__); stillpicture = false; Stop(1); + closeDevice(); + openDevice(); } void cVideo::Standby(unsigned int bOn) diff --git a/libeplayer3-arm/container/buff_ffmpeg.c b/libeplayer3-arm/container/buff_ffmpeg.c index 1f394dd..7d6cc96 100644 --- a/libeplayer3-arm/container/buff_ffmpeg.c +++ b/libeplayer3-arm/container/buff_ffmpeg.c @@ -103,8 +103,7 @@ static void update_finish_timeout() /* On some STBs PTS readed from decoder is invalid after seek or at start * this is the reason for additional validation when we what to close immediately */ - if (!progressive_playback && 0 == ret && currPts >= maxInjectedPts && - ((currPts - maxInjectedPts) / 90000) < 2) + if (!progressive_playback && 0 == ret && currPts >= maxInjectedPts && ((currPts - maxInjectedPts) / 90000) < 2) { /* close immediately */ @@ -250,7 +249,7 @@ static void ffmpeg_filler(Context_t *context, int32_t id, int32_t *inpause, int3 return; } while ((flag == 0 && avContextTab[0] != NULL && avContextTab[0]->pb != NULL && rwdiff > FILLBUFDIFF) || - (flag == 1 && hasfillerThreadStarted[id] == 1 && avContextTab[0] != NULL && avContextTab[0]->pb != NULL && rwdiff > FILLBUFDIFF)) + (flag == 1 && hasfillerThreadStarted[id] == 1 && avContextTab[0] != NULL && avContextTab[0]->pb != NULL && rwdiff > FILLBUFDIFF)) { if (0 == PlaybackDieNow(0)) { diff --git a/libeplayer3-arm/container/container.c b/libeplayer3-arm/container/container.c index a36e40b..de71ef8 100644 --- a/libeplayer3-arm/container/container.c +++ b/libeplayer3-arm/container/container.c @@ -68,7 +68,7 @@ static void printContainerCapabilities() container_printf(10, "\n"); } -static int32_t selectContainer(Context_t *context, char *extension) +static int32_t selectContainer(Context_t *context, char *extension) { int32_t i = 0; int32_t j = 0; diff --git a/libeplayer3-arm/container/container_ffmpeg.c b/libeplayer3-arm/container/container_ffmpeg.c index 1433e4f..e0d7b7f 100644 --- a/libeplayer3-arm/container/container_ffmpeg.c +++ b/libeplayer3-arm/container/container_ffmpeg.c @@ -719,7 +719,7 @@ static void FFMPEGThread(Context_t *context) #endif #ifdef HAVE_FLV2MPEG4_CONVERTER if (get_codecpar(avContextTab[cAVIdx]->streams[packet.stream_index])->codec_id == AV_CODEC_ID_FLV1 && - 0 == memcmp(videoTrack->Encoding, "V_MPEG4", 7)) + 0 == memcmp(videoTrack->Encoding, "V_MPEG4", 7)) { flv2mpeg4_write_packet(context, &flv2mpeg4_context, videoTrack, cAVIdx, ¤tVideoPts, &latestPts, &packet); update_max_injected_pts(latestPts); @@ -979,7 +979,7 @@ static void FFMPEGThread(Context_t *context) if (e < 0) { ffmpeg_err("swr_init: %d (icl=%d ocl=%d isr=%d osr=%d isf=%d osf=%d\n", - -e, (int32_t)c->channel_layout, (int32_t)out_channel_layout, c->sample_rate, out_sample_rate, c->sample_fmt, AV_SAMPLE_FMT_S16); + -e, (int32_t)c->channel_layout, (int32_t)out_channel_layout, c->sample_rate, out_sample_rate, c->sample_fmt, AV_SAMPLE_FMT_S16); swr_free(&swr); swr = NULL; } @@ -994,11 +994,11 @@ static void FFMPEGThread(Context_t *context) continue; } int64_t next_in_pts = av_rescale(av_frame_get_best_effort_timestamp(decoded_frame), - ((AVStream *) audioTrack->stream)->time_base.num * (int64_t)out_sample_rate * c->sample_rate, - ((AVStream *) audioTrack->stream)->time_base.den); + ((AVStream *) audioTrack->stream)->time_base.num * (int64_t)out_sample_rate * c->sample_rate, + ((AVStream *) audioTrack->stream)->time_base.den); int64_t next_out_pts = av_rescale(swr_next_pts(swr, next_in_pts), - ((AVStream *) audioTrack->stream)->time_base.den, - ((AVStream *) audioTrack->stream)->time_base.num * (int64_t)out_sample_rate * c->sample_rate); + ((AVStream *) audioTrack->stream)->time_base.den, + ((AVStream *) audioTrack->stream)->time_base.num * (int64_t)out_sample_rate * c->sample_rate); currentAudioPts = audioTrack->pts = pts = calcPts(cAVIdx, audioTrack->stream, next_out_pts); out_samples = swr_convert(swr, &output[0], out_samples, (const uint8_t **) &decoded_frame->data[0], in_samples); ////////////////////////////////////////////////////////////////////// @@ -1108,9 +1108,9 @@ static void FFMPEGThread(Context_t *context) printf("{\"log\":\"Frame read error: '%s'\"}\n", errbuf); } /* - if( ffmpegStatus == AVERROR(EAGAIN) ) + if(ffmpegStatus == AVERROR(EAGAIN)) { - continue; + continue; } */ ffmpegStatus = 0; @@ -1261,8 +1261,7 @@ int32_t container_ffmpeg_init_av_context(Context_t *context, char *filename, int avContextTab[AVIdx]->interrupt_callback.callback = interrupt_cb; avContextTab[AVIdx]->interrupt_callback.opaque = context->playback; #ifdef SAM_CUSTOM_IO - if (0 == strstr(filename, "://") || - 0 == strncmp(filename, "file://", 7)) + if (0 == strstr(filename, "://") || 0 == strncmp(filename, "file://", 7)) { AVIOContext *avio_ctx = container_ffmpeg_get_avio_context(filename, 4096); if (avio_ctx) @@ -1293,11 +1292,11 @@ int32_t container_ffmpeg_init_av_context(Context_t *context, char *filename, int rtmpProtoImplType = RTMP_LIBRTMP; } if (0 == strncmp(filename, "rtmp://", 7) || - 0 == strncmp(filename, "rtmpe://", 8) || - 0 == strncmp(filename, "rtmps://", 8) || - 0 == strncmp(filename, "rtmpt://", 8) || - 0 == strncmp(filename, "rtmpte://", 9) || - 0 == strncmp(filename, "rtmpts://", 9)) + 0 == strncmp(filename, "rtmpe://", 8) || + 0 == strncmp(filename, "rtmps://", 8) || + 0 == strncmp(filename, "rtmpt://", 8) || + 0 == strncmp(filename, "rtmpte://", 9) || + 0 == strncmp(filename, "rtmpts://", 9)) { /* At first we need to check which protocol * implementations we have @@ -1334,8 +1333,7 @@ int32_t container_ffmpeg_init_av_context(Context_t *context, char *filename, int * unless uri contain param wich can be understandable * only by librtmp */ - if (strstr(filename, " token=") || - strstr(filename, " jtv=")) + if (strstr(filename, " token=") || strstr(filename, " jtv=")) { rtmpProtoImplType = RTMP_LIBRTMP; } @@ -1479,8 +1477,7 @@ int32_t container_ffmpeg_init_av_context(Context_t *context, char *filename, int } } } - else if (0 == strncmp(filename, "http://", 7) || - 0 == strncmp(filename, "https://", 8)) + else if (0 == strncmp(filename, "http://", 7) || 0 == strncmp(filename, "https://", 8)) { av_dict_set(&avio_opts, "timeout", "20000000", 0); //20sec av_dict_set(&avio_opts, "reconnect", "1", 0); @@ -1495,8 +1492,8 @@ int32_t container_ffmpeg_init_av_context(Context_t *context, char *filename, int if ((err = avformat_open_input(&avContextTab[AVIdx], filename, fmt, pavio_opts)) != 0) { if (rtmp_proto_impl == 0 && //err == AVERROR_UNKNOWN && - rtmpProtoImplType == RTMP_NATIVE && - numOfRTMPImpl > 1) + rtmpProtoImplType == RTMP_NATIVE && + numOfRTMPImpl > 1) { // retry with librtmp err = avformat_open_input(&avContextTab[AVIdx], filename + 2, fmt, pavio_opts); @@ -1532,8 +1529,7 @@ int32_t container_ffmpeg_init_av_context(Context_t *context, char *filename, int if (avContextTab[AVIdx] != NULL && avContextTab[AVIdx]->pb != NULL && !context->playback->isTSLiveMode) { ffmpeg_real_read_org = avContextTab[AVIdx]->pb->read_packet; - if (0 == AVIdx && strstr(filename, "://") != 0 && - strncmp(filename, "file://", 7) != 0) + if (0 == AVIdx && strstr(filename, "://") != 0 && strncmp(filename, "file://", 7) != 0) { if (ffmpeg_buf_size > 0 && ffmpeg_buf_size > FILLBUFDIFF + FILLBUFPAKET) { @@ -1601,7 +1597,7 @@ int32_t container_ffmpeg_init(Context_t *context, PlayFiles_t *playFilesNames) avformat_network_init(); // SULGE DEBUG ENABLED // make ffmpeg silen - // av_log_set_level( AV_LOG_DEBUG ); + // av_log_set_level(AV_LOG_DEBUG); av_log_set_callback(ffmpeg_silen_callback); context->playback->abortRequested = 0; int32_t res = container_ffmpeg_init_av_context(context, playFilesNames->szFirstFile, 0); @@ -1727,9 +1723,9 @@ int32_t container_ffmpeg_update_tracks(Context_t *context, char *filename, int32 continue; // skip this stream } encoding = Codec2Encoding((int32_t)get_codecpar(stream)->codec_id, (int32_t)get_codecpar(stream)->codec_type, \ - (uint8_t *)get_codecpar(stream)->extradata, \ - (int)get_codecpar(stream)->extradata_size, \ - (int)get_codecpar(stream)->profile, &version); + (uint8_t *)get_codecpar(stream)->extradata, \ + (int)get_codecpar(stream)->extradata_size, \ + (int)get_codecpar(stream)->profile, &version); if (encoding != NULL && !strncmp(encoding, "A_IPCM", 6) && insert_pcm_as_lpcm) { encoding = "A_LPCM"; @@ -1885,7 +1881,7 @@ int32_t container_ffmpeg_update_tracks(Context_t *context, char *filename, int32 else if (get_codecpar(stream)->codec_id == AV_CODEC_ID_AAC) { if (0 == strncmp(avContext->iformat->name, "mpegts", 6) || - 0 == strncmp(avContext->iformat->name, "hls,", 4)) + 0 == strncmp(avContext->iformat->name, "hls,", 4)) { const char marker[] = "ADTS"; track.aacbuflen = sizeof(marker) / sizeof(char); @@ -1961,10 +1957,10 @@ int32_t container_ffmpeg_update_tracks(Context_t *context, char *filename, int32 } */ } - else if (get_codecpar(stream)->codec_id == AV_CODEC_ID_WMAV1 - || get_codecpar(stream)->codec_id == AV_CODEC_ID_WMAV2 - || get_codecpar(stream)->codec_id == AV_CODEC_ID_WMAPRO - || get_codecpar(stream)->codec_id == AV_CODEC_ID_WMALOSSLESS) //if (get_codecpar(stream)->extradata_size > 0) + else if (get_codecpar(stream)->codec_id == AV_CODEC_ID_WMAV1 || + get_codecpar(stream)->codec_id == AV_CODEC_ID_WMAV2 || + get_codecpar(stream)->codec_id == AV_CODEC_ID_WMAPRO || + get_codecpar(stream)->codec_id == AV_CODEC_ID_WMALOSSLESS) //if (get_codecpar(stream)->extradata_size > 0) { ffmpeg_printf(10, "Create WMA ExtraData\n"); uint16_t channels = get_codecpar(stream)->channels; @@ -2103,11 +2099,11 @@ int32_t container_ffmpeg_update_tracks(Context_t *context, char *filename, int32 { if (get_codecpar(stream)->codec_id != AV_CODEC_ID_SSA && #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55, 3, 100) - get_codecpar(stream)->codec_id != AV_CODEC_ID_ASS && + get_codecpar(stream)->codec_id != AV_CODEC_ID_ASS && #endif - get_codecpar(stream)->codec_id != AV_CODEC_ID_SUBRIP && - get_codecpar(stream)->codec_id != AV_CODEC_ID_TEXT && - get_codecpar(stream)->codec_id != AV_CODEC_ID_SRT) + get_codecpar(stream)->codec_id != AV_CODEC_ID_SUBRIP && + get_codecpar(stream)->codec_id != AV_CODEC_ID_TEXT && + get_codecpar(stream)->codec_id != AV_CODEC_ID_SRT) { ffmpeg_printf(10, "subtitle with not supported codec codec_id[%u]\n", (uint32_t)get_codecpar(stream)->codec_id); } @@ -2509,7 +2505,7 @@ static int32_t container_ffmpeg_get_length(Context_t *context, int64_t *length) static int32_t container_ffmpeg_switch_audio(Context_t *context, int32_t *arg) { ffmpeg_printf(10, "track %d\n", *arg); - /* Hellmaster1024: nothing to do here!*/ + /* Hellmaster1024: nothing to do here! */ int64_t sec = -5; context->playback->Command(context, PLAYBACK_SEEK, (void *)&sec); return cERR_CONTAINER_FFMPEG_NO_ERROR; @@ -2650,11 +2646,11 @@ static int32_t Command(void *_context, ContainerCmd_t command, void *argument) int ret = cERR_CONTAINER_FFMPEG_NO_ERROR; ffmpeg_printf(50, "Command %d\n", command); if (command != CONTAINER_SET_BUFFER_SEEK_TIME && - command != CONTAINER_SET_BUFFER_SIZE && - command != CONTAINER_GET_BUFFER_SIZE && - command != CONTAINER_GET_BUFFER_STATUS && - command != CONTAINER_STOP_BUFFER && - command != CONTAINER_INIT && !avContextTab[0]) + command != CONTAINER_SET_BUFFER_SIZE && + command != CONTAINER_GET_BUFFER_SIZE && + command != CONTAINER_GET_BUFFER_STATUS && + command != CONTAINER_STOP_BUFFER && + command != CONTAINER_INIT && !avContextTab[0]) { return cERR_CONTAINER_FFMPEG_ERR; } diff --git a/libeplayer3-arm/container/mpeg4p2_ffmpeg.c b/libeplayer3-arm/container/mpeg4p2_ffmpeg.c index 9a37b9f..174d11e 100644 --- a/libeplayer3-arm/container/mpeg4p2_ffmpeg.c +++ b/libeplayer3-arm/container/mpeg4p2_ffmpeg.c @@ -32,9 +32,9 @@ static int filter_packet(AVBitStreamFilterContext *bsf_ctx, AVCodecContext *enc_ int ret; AVPacket new_pkt = *pkt; ret = av_bitstream_filter_filter(bsf_ctx, enc_ctx, NULL, - &new_pkt.data, &new_pkt.size, - pkt->data, pkt->size, - pkt->flags & AV_PKT_FLAG_KEY); + &new_pkt.data, &new_pkt.size, + pkt->data, pkt->size, + pkt->flags & AV_PKT_FLAG_KEY); if (ret == 0 && new_pkt.data != pkt->data) { if ((ret = av_copy_packet(&new_pkt, pkt)) < 0) @@ -47,15 +47,15 @@ static int filter_packet(AVBitStreamFilterContext *bsf_ctx, AVCodecContext *enc_ pkt->side_data_elems = 0; wrapped_packet_unref(pkt); new_pkt.buf = av_buffer_create(new_pkt.data, new_pkt.size, - av_buffer_default_free, NULL, 0); + av_buffer_default_free, NULL, 0); if (!new_pkt.buf) return -1; } if (ret < 0) { ffmpeg_err("Failed to filter bitstream with filter %s for stream %d with codec %s\n", - bsf_ctx->filter->name, pkt->stream_index, - avcodec_get_name(enc_ctx->codec_id)); + bsf_ctx->filter->name, pkt->stream_index, + avcodec_get_name(enc_ctx->codec_id)); return -1; } *pkt = new_pkt; diff --git a/libeplayer3-arm/external/ffmpeg/get_bits.h b/libeplayer3-arm/external/ffmpeg/get_bits.h index c84b351..fd99374 100644 --- a/libeplayer3-arm/external/ffmpeg/get_bits.h +++ b/libeplayer3-arm/external/ffmpeg/get_bits.h @@ -97,8 +97,8 @@ typedef struct GetBitContext #endif #define OPEN_READER_NOSIZE(name, gb) \ - unsigned int name ## _index = (gb)->index; \ - unsigned int av_unused name ## _cache + unsigned int name ## _index = (gb)->index; \ + unsigned int av_unused name ## _cache #define OPEN_READER(name, gb) OPEN_READER_NOSIZE(name, gb) #define BITS_AVAILABLE(name, gb) 1 @@ -108,18 +108,18 @@ typedef struct GetBitContext # ifdef LONG_BITSTREAM_READER # define UPDATE_CACHE_LE(name, gb) name ## _cache = \ - AV_RL64((gb)->buffer + (name ## _index >> 3)) >> (name ## _index & 7) + AV_RL64((gb)->buffer + (name ## _index >> 3)) >> (name ## _index & 7) # define UPDATE_CACHE_BE(name, gb) name ## _cache = \ - AV_RB64((gb)->buffer + (name ## _index >> 3)) >> (32 - (name ## _index & 7)) + AV_RB64((gb)->buffer + (name ## _index >> 3)) >> (32 - (name ## _index & 7)) #else # define UPDATE_CACHE_LE(name, gb) name ## _cache = \ - AV_RL32((gb)->buffer + (name ## _index >> 3)) >> (name ## _index & 7) + AV_RL32((gb)->buffer + (name ## _index >> 3)) >> (name ## _index & 7) # define UPDATE_CACHE_BE(name, gb) name ## _cache = \ - AV_RB32((gb)->buffer + (name ## _index >> 3)) << (name ## _index & 7) + AV_RB32((gb)->buffer + (name ## _index >> 3)) << (name ## _index & 7) #endif @@ -142,10 +142,10 @@ typedef struct GetBitContext #define BITS_LEFT(name, gb) ((int)((gb)->size_in_bits - name ## _index)) #define SKIP_BITS(name, gb, num) \ - do { \ - SKIP_CACHE(name, gb, num); \ - SKIP_COUNTER(name, gb, num); \ - } while (0) + do { \ + SKIP_CACHE(name, gb, num); \ + SKIP_COUNTER(name, gb, num); \ + } while (0) #define LAST_SKIP_BITS(name, gb, num) SKIP_COUNTER(name, gb, num) @@ -383,7 +383,7 @@ static inline int check_marker(void *logctx, GetBitContext *s, const char *msg) * @return 0 on success, AVERROR_INVALIDDATA if the buffer_size would overflow. */ static inline int init_get_bits(GetBitContext *s, const uint8_t *buffer, - int bit_size) + int bit_size) { int buffer_size; int ret = 0; @@ -411,7 +411,7 @@ static inline int init_get_bits(GetBitContext *s, const uint8_t *buffer, * @return 0 on success, AVERROR_INVALIDDATA if the buffer_size would overflow. */ static inline int init_get_bits8(GetBitContext *s, const uint8_t *buffer, - int byte_size) + int byte_size) { if (byte_size > INT_MAX / 8 || byte_size < 0) byte_size = -1; @@ -432,73 +432,73 @@ static inline const uint8_t *align_get_bits(GetBitContext *s) * is undefined. */ #define GET_VLC(code, name, gb, table, bits, max_depth) \ - do { \ - int n, nb_bits; \ - unsigned int index; \ - \ - index = SHOW_UBITS(name, gb, bits); \ - code = table[index][0]; \ - n = table[index][1]; \ - \ - if (max_depth > 1 && n < 0) { \ - LAST_SKIP_BITS(name, gb, bits); \ - UPDATE_CACHE(name, gb); \ - \ - nb_bits = -n; \ - \ - index = SHOW_UBITS(name, gb, nb_bits) + code; \ - code = table[index][0]; \ - n = table[index][1]; \ - if (max_depth > 2 && n < 0) { \ - LAST_SKIP_BITS(name, gb, nb_bits); \ - UPDATE_CACHE(name, gb); \ - \ - nb_bits = -n; \ - \ - index = SHOW_UBITS(name, gb, nb_bits) + code; \ - code = table[index][0]; \ - n = table[index][1]; \ - } \ - } \ - SKIP_BITS(name, gb, n); \ - } while (0) + do { \ + int n, nb_bits; \ + unsigned int index; \ + \ + index = SHOW_UBITS(name, gb, bits); \ + code = table[index][0]; \ + n = table[index][1]; \ + \ + if (max_depth > 1 && n < 0) { \ + LAST_SKIP_BITS(name, gb, bits); \ + UPDATE_CACHE(name, gb); \ + \ + nb_bits = -n; \ + \ + index = SHOW_UBITS(name, gb, nb_bits) + code; \ + code = table[index][0]; \ + n = table[index][1]; \ + if (max_depth > 2 && n < 0) { \ + LAST_SKIP_BITS(name, gb, nb_bits); \ + UPDATE_CACHE(name, gb); \ + \ + nb_bits = -n; \ + \ + index = SHOW_UBITS(name, gb, nb_bits) + code; \ + code = table[index][0]; \ + n = table[index][1]; \ + } \ + } \ + SKIP_BITS(name, gb, n); \ + } while (0) #define GET_RL_VLC(level, run, name, gb, table, bits, \ - max_depth, need_update) \ -do { \ - int n, nb_bits; \ - unsigned int index; \ - \ - index = SHOW_UBITS(name, gb, bits); \ - level = table[index].level; \ - n = table[index].len; \ - \ - if (max_depth > 1 && n < 0) { \ - SKIP_BITS(name, gb, bits); \ - if (need_update) { \ - UPDATE_CACHE(name, gb); \ - } \ - \ - nb_bits = -n; \ - \ - index = SHOW_UBITS(name, gb, nb_bits) + level; \ - level = table[index].level; \ - n = table[index].len; \ - if (max_depth > 2 && n < 0) { \ - LAST_SKIP_BITS(name, gb, nb_bits); \ - if (need_update) { \ - UPDATE_CACHE(name, gb); \ - } \ - nb_bits = -n; \ - \ - index = SHOW_UBITS(name, gb, nb_bits) + level; \ - level = table[index].level; \ - n = table[index].len; \ - } \ - } \ - run = table[index].run; \ - SKIP_BITS(name, gb, n); \ -} while (0) + max_depth, need_update) \ + do { \ + int n, nb_bits; \ + unsigned int index; \ + \ + index = SHOW_UBITS(name, gb, bits); \ + level = table[index].level; \ + n = table[index].len; \ + \ + if (max_depth > 1 && n < 0) { \ + SKIP_BITS(name, gb, bits); \ + if (need_update) { \ + UPDATE_CACHE(name, gb); \ + } \ + \ + nb_bits = -n; \ + \ + index = SHOW_UBITS(name, gb, nb_bits) + level; \ + level = table[index].level; \ + n = table[index].len; \ + if (max_depth > 2 && n < 0) { \ + LAST_SKIP_BITS(name, gb, nb_bits); \ + if (need_update) { \ + UPDATE_CACHE(name, gb); \ + } \ + nb_bits = -n; \ + \ + index = SHOW_UBITS(name, gb, nb_bits) + level; \ + level = table[index].level; \ + n = table[index].len; \ + } \ + } \ + run = table[index].run; \ + SKIP_BITS(name, gb, n); \ + } while (0) static inline int decode012(GetBitContext *gb) { diff --git a/libeplayer3-arm/external/ffmpeg/mathops.h b/libeplayer3-arm/external/ffmpeg/mathops.h index 641324e..b8c7ff7 100644 --- a/libeplayer3-arm/external/ffmpeg/mathops.h +++ b/libeplayer3-arm/external/ffmpeg/mathops.h @@ -30,7 +30,7 @@ #endif #ifndef NEG_SSR32 -# define NEG_SSR32(a,s) ((( int32_t)(a))>>(32-(s))) +# define NEG_SSR32(a,s) (((int32_t)(a))>>(32-(s))) #endif #ifndef sign_extend diff --git a/libeplayer3-arm/external/ffmpeg/mpeg4audio.h b/libeplayer3-arm/external/ffmpeg/mpeg4audio.h index 940dff8..941df06 100644 --- a/libeplayer3-arm/external/ffmpeg/mpeg4audio.h +++ b/libeplayer3-arm/external/ffmpeg/mpeg4audio.h @@ -54,7 +54,7 @@ extern const uint8_t ff_mpeg4audio_channels[8]; * @return On error -1 is returned, on success AudioSpecificConfig bit index in extradata. */ int avpriv_mpeg4audio_get_config(MPEG4AudioConfig *c, const uint8_t *buf, - int bit_size, int sync_extension); + int bit_size, int sync_extension); enum AudioObjectType { diff --git a/libeplayer3-arm/external/ffmpeg/put_bits.h b/libeplayer3-arm/external/ffmpeg/put_bits.h index 8a88d11..f99cfac 100644 --- a/libeplayer3-arm/external/ffmpeg/put_bits.h +++ b/libeplayer3-arm/external/ffmpeg/put_bits.h @@ -47,7 +47,7 @@ typedef struct PutBitContext * @param buffer_size the size in bytes of buffer */ static inline void init_put_bits(PutBitContext *s, uint8_t *buffer, - int buffer_size) + int buffer_size) { if (buffer_size < 0) { @@ -70,7 +70,7 @@ static inline void init_put_bits(PutBitContext *s, uint8_t *buffer, * must be larger than the previous size */ static inline void rebase_put_bits(PutBitContext *s, uint8_t *buffer, - int buffer_size) + int buffer_size) { av_assert0(8 * buffer_size > s->size_in_bits); s->buf_end = buffer + buffer_size; @@ -136,7 +136,7 @@ void avpriv_align_put_bits(PutBitContext *s); * @param terminate_string 0-terminates the written string if value is 1 */ void avpriv_put_string(PutBitContext *pb, const char *string, - int terminate_string); + int terminate_string); /** * Copy the content of src to the bitstream. diff --git a/libeplayer3-arm/external/ffmpeg/src/bitstream.c b/libeplayer3-arm/external/ffmpeg/src/bitstream.c index 4371a7a..8c0f795 100644 --- a/libeplayer3-arm/external/ffmpeg/src/bitstream.c +++ b/libeplayer3-arm/external/ffmpeg/src/bitstream.c @@ -36,8 +36,7 @@ void avpriv_align_put_bits(PutBitContext *s) put_bits(s, s->bit_left & 7, 0); } -void avpriv_put_string(PutBitContext *pb, const char *string, - int terminate_string) +void avpriv_put_string(PutBitContext *pb, const char *string, int terminate_string) { while (*string) { diff --git a/libeplayer3-arm/external/ffmpeg/src/mpeg4audio.c b/libeplayer3-arm/external/ffmpeg/src/mpeg4audio.c index f07bc69..8bbd7eb 100644 --- a/libeplayer3-arm/external/ffmpeg/src/mpeg4audio.c +++ b/libeplayer3-arm/external/ffmpeg/src/mpeg4audio.c @@ -72,11 +72,11 @@ static inline int get_sample_rate(GetBitContext *gb, int *index) { *index = get_bits(gb, 4); return *index == 0x0f ? get_bits(gb, 24) : - avpriv_mpeg4audio_sample_rates[*index]; + avpriv_mpeg4audio_sample_rates[*index]; } int avpriv_mpeg4audio_get_config(MPEG4AudioConfig *c, const uint8_t *buf, - int bit_size, int sync_extension) + int bit_size, int sync_extension) { GetBitContext gb; int specific_config_bitindex, ret; @@ -93,8 +93,8 @@ int avpriv_mpeg4audio_get_config(MPEG4AudioConfig *c, const uint8_t *buf, c->sbr = -1; c->ps = -1; if (c->object_type == AOT_SBR || (c->object_type == AOT_PS && - // check for W6132 Annex YYYY draft MP3onMP4 - !(show_bits(&gb, 3) & 0x03 && !(show_bits(&gb, 9) & 0x3F)))) + // check for W6132 Annex YYYY draft MP3onMP4 + !(show_bits(&gb, 3) & 0x03 && !(show_bits(&gb, 9) & 0x3F)))) { if (c->object_type == AOT_PS) c->ps = 1; @@ -152,8 +152,8 @@ int avpriv_mpeg4audio_get_config(MPEG4AudioConfig *c, const uint8_t *buf, } static av_always_inline unsigned int copy_bits(PutBitContext *pb, - GetBitContext *gb, - int bits) + GetBitContext *gb, + int bits) { unsigned int el = get_bits(gb, bits); put_bits(pb, bits, el); diff --git a/libeplayer3-arm/external/flv2mpeg4/src/flv2mpeg4.c b/libeplayer3-arm/external/flv2mpeg4/src/flv2mpeg4.c index f1cc609..3e22d98 100644 --- a/libeplayer3-arm/external/flv2mpeg4/src/flv2mpeg4.c +++ b/libeplayer3-arm/external/flv2mpeg4/src/flv2mpeg4.c @@ -129,10 +129,10 @@ static int write_pad_not_coded_frames(flv2mpeg4_CTX *pub_ctx, CONVCTX *c, BW *bw flash_bw(bw); // write frame if (pub_ctx->write_packet_cb(pub_ctx->usr_data, - 0, - 0,//c->frame, - bw->buf, - bw->pos) < 0) + 0, + 0,//c->frame, + bw->buf, + bw->pos) < 0) { return -1; } @@ -184,10 +184,10 @@ static int write_m4v_picture_frame(flv2mpeg4_CTX *pub_ctx, CONVCTX *c, BR *br, B flash_bw(bw); // write frame if (pub_ctx->write_packet_cb(pub_ctx->usr_data, - vop.picture_type == M4V_I_TYPE, - 0,//c->frame, - bw->buf, - bw->pos) < 0) + vop.picture_type == M4V_I_TYPE, + 0,//c->frame, + bw->buf, + bw->pos) < 0) { return -1; } diff --git a/libeplayer3-arm/external/flv2mpeg4/src/m4vencode.c b/libeplayer3-arm/external/flv2mpeg4/src/m4vencode.c index 50ba7dd..7860d83 100644 --- a/libeplayer3-arm/external/flv2mpeg4/src/m4vencode.c +++ b/libeplayer3-arm/external/flv2mpeg4/src/m4vencode.c @@ -109,8 +109,8 @@ static void __inline encode_escape_3(BW *p, int last, int run, int level) { #if 0 put_bits(p, - 7 + 2 + 1 + 6 + 1 + 12 + 1, //30bit - (3 << 23) + (3 << 21) + (last << 20) + (run << 14) + (1 << 13) + (((level - 64) & 0xfff) << 1) + 1); + 7 + 2 + 1 + 6 + 1 + 12 + 1, //30bit + (3 << 23) + (3 << 21) + (last << 20) + (run << 14) + (1 << 13) + (((level - 64) & 0xfff) << 1) + 1); #else put_bits(p, 7, 3); // escape put_bits(p, 2, 3); // escape3 diff --git a/libeplayer3-arm/include/aac.h b/libeplayer3-arm/include/aac.h index a50f7de..402087b 100644 --- a/libeplayer3-arm/include/aac.h +++ b/libeplayer3-arm/include/aac.h @@ -25,7 +25,7 @@ static inline int HasADTSHeader(uint8_t *data, int size) { if (size >= AAC_HEADER_LENGTH && 0xFF == data[0] && 0xF0 == 0xF0 & data[1] && - size == ((data[3] & 0x3) << 11 | data[4] << 3 | data[5] >> 5)) + size == ((data[3] & 0x3) << 11 | data[4] << 3 | data[5] >> 5)) { return 1; } diff --git a/libeplayer3-arm/include/common.h b/libeplayer3-arm/include/common.h index fa708f3..ae0f4d9 100644 --- a/libeplayer3-arm/include/common.h +++ b/libeplayer3-arm/include/common.h @@ -1,7 +1,7 @@ #ifndef COMMON_H_ #define COMMON_H_ -#include +#include #include "container.h" #include "output.h" diff --git a/libeplayer3-arm/include/manager.h b/libeplayer3-arm/include/manager.h index dd33492..0d9fd76 100644 --- a/libeplayer3-arm/include/manager.h +++ b/libeplayer3-arm/include/manager.h @@ -86,7 +86,6 @@ typedef struct TrackDescription_s int32_t aspect_ratio_num; int32_t aspect_ratio_den; int progressive; - } TrackDescription_t; typedef struct Manager_s @@ -94,7 +93,6 @@ typedef struct Manager_s char *Name; int (* Command)(/*Context_t*/void *, ManagerCmd_t, void *); char **Capabilities; - } Manager_t; typedef struct ManagerHandler_s diff --git a/libeplayer3-arm/include/misc.h b/libeplayer3-arm/include/misc.h index 55e98cb..4934180 100644 --- a/libeplayer3-arm/include/misc.h +++ b/libeplayer3-arm/include/misc.h @@ -15,16 +15,16 @@ typedef struct BitPacker_s { - uint8_t *Ptr; /* write pointer */ - uint32_t BitBuffer; /* bitreader shifter */ - int32_t Remaining; /* number of remaining in the shifter */ + uint8_t *Ptr; /* write pointer */ + uint32_t BitBuffer; /* bitreader shifter */ + int32_t Remaining; /* number of remaining in the shifter */ } BitPacker_t; /* ***************************** */ /* Makros/Constants */ /* ***************************** */ -#define INVALID_PTS_VALUE 0x200000000ull +#define INVALID_PTS_VALUE 0x200000000ull /* ***************************** */ /* Prototypes */ @@ -96,16 +96,16 @@ static inline int32_t IsDreambox() static inline uint32_t ReadUint32(uint8_t *buffer) { uint32_t num = (uint32_t)buffer[0] << 24 | - (uint32_t)buffer[1] << 16 | - (uint32_t)buffer[2] << 8 | - (uint32_t)buffer[3]; + (uint32_t)buffer[1] << 16 | + (uint32_t)buffer[2] << 8 | + (uint32_t)buffer[3]; return num; } static inline uint16_t ReadUInt16(uint8_t *buffer) { uint16_t num = (uint16_t)buffer[0] << 8 | - (uint16_t)buffer[1]; + (uint16_t)buffer[1]; return num; } diff --git a/libeplayer3-arm/include/output.h b/libeplayer3-arm/include/output.h index 356e5e1..dd0bb93 100644 --- a/libeplayer3-arm/include/output.h +++ b/libeplayer3-arm/include/output.h @@ -2,6 +2,7 @@ #define OUTPUT_H_ #include +#include typedef enum { @@ -69,7 +70,6 @@ typedef struct Output_s int32_t (* Command)(/*Context_t*/void *, OutputCmd_t, void *); int32_t (* Write)(/*Context_t*/void *, void *privateData); char **Capabilities; - } Output_t; extern Output_t LinuxDvbOutput; diff --git a/libeplayer3-arm/include/playback.h b/libeplayer3-arm/include/playback.h index 77781d6..5e80c8c 100644 --- a/libeplayer3-arm/include/playback.h +++ b/libeplayer3-arm/include/playback.h @@ -3,7 +3,28 @@ #include #include -typedef enum {PLAYBACK_OPEN, PLAYBACK_CLOSE, PLAYBACK_PLAY, PLAYBACK_STOP, PLAYBACK_PAUSE, PLAYBACK_CONTINUE, PLAYBACK_FLUSH, PLAYBACK_TERM, PLAYBACK_FASTFORWARD, PLAYBACK_SEEK, PLAYBACK_SEEK_ABS, PLAYBACK_PTS, PLAYBACK_LENGTH, PLAYBACK_SWITCH_AUDIO, PLAYBACK_SWITCH_SUBTITLE, PLAYBACK_INFO, PLAYBACK_SLOWMOTION, PLAYBACK_FASTBACKWARD, PLAYBACK_GET_FRAME_COUNT, PLAYBACK_METADATA} PlaybackCmd_t; +typedef enum { + PLAYBACK_OPEN, + PLAYBACK_CLOSE, + PLAYBACK_PLAY, + PLAYBACK_STOP, + PLAYBACK_PAUSE, + PLAYBACK_CONTINUE, + PLAYBACK_FLUSH, + PLAYBACK_TERM, + PLAYBACK_FASTFORWARD, + PLAYBACK_SEEK, + PLAYBACK_SEEK_ABS, + PLAYBACK_PTS, + PLAYBACK_LENGTH, + PLAYBACK_SWITCH_AUDIO, + PLAYBACK_SWITCH_SUBTITLE, + PLAYBACK_INFO, + PLAYBACK_SLOWMOTION, + PLAYBACK_FASTBACKWARD, + PLAYBACK_GET_FRAME_COUNT, + PLAYBACK_METADATA +} PlaybackCmd_t; typedef struct PlaybackHandler_s { diff --git a/libeplayer3-arm/main/exteplayer.c b/libeplayer3-arm/main/exteplayer.c index e143fa3..17b3146 100644 --- a/libeplayer3-arm/main/exteplayer.c +++ b/libeplayer3-arm/main/exteplayer.c @@ -119,8 +119,7 @@ static void *TermThreadFun(void *arg) FD_SET(g_pfd[0], &readfds); FD_SET(fd, &readfds); nfds = fd > g_pfd[0] ? fd + 1 : g_pfd[0] + 1; - while (select(nfds, &readfds, NULL, NULL, NULL) == -1 - && errno == EINTR) + while (select(nfds, &readfds, NULL, NULL, NULL) == -1 && errno == EINTR) { /* Restart if interrupted by signal */ continue; @@ -128,7 +127,7 @@ static void *TermThreadFun(void *arg) if (FD_ISSET(fd, &readfds)) { /* - if ( (cl = accept(fd, NULL, NULL)) == -1) + if ((cl = accept(fd, NULL, NULL)) == -1) { perror("TermThreadFun accept error"); goto finish; @@ -404,7 +403,7 @@ static int HandleTracks(const Manager_t *ptrManager, const PlaybackCmd_t playbac else // video { fprintf(stderr, "{\"%c_%c\":{\"id\":%d,\"e\":\"%s\",\"n\":\"%s\",\"w\":%d,\"h\":%d,\"f\":%u,\"p\":%d,\"an\":%d,\"ad\":%d}}\n", \ - argvBuff[0], argvBuff[1], track->Id, track->Encoding, track->Name, track->width, track->height, track->frame_rate, track->progressive, track->aspect_ratio_num, track->aspect_ratio_den); + argvBuff[0], argvBuff[1], track->Id, track->Encoding, track->Name, track->width, track->height, track->frame_rate, track->progressive, track->aspect_ratio_num, track->aspect_ratio_den); } free(track->Encoding); free(track->Name); @@ -475,6 +474,7 @@ static int HandleTracks(const Manager_t *ptrManager, const PlaybackCmd_t playbac return commandRetVal; } #endif + static void UpdateVideoTrack() { HandleTracks(g_player->manager->video, (PlaybackCmd_t) - 1, "vc"); @@ -932,10 +932,10 @@ int main(int argc, char *argv[]) if (ptrP) { fprintf(stderr, "{\"PLAYBACK_INFO\":{ \"isPlaying\":%s, \"isPaused\":%s, \"isForwarding\":%s, \"isSeeking\":%s, \"isCreationPhase\":%s,", \ - DUMP_BOOL(ptrP->isPlaying), DUMP_BOOL(ptrP->isPaused), DUMP_BOOL(ptrP->isForwarding), DUMP_BOOL(ptrP->isSeeking), DUMP_BOOL(ptrP->isCreationPhase)); + DUMP_BOOL(ptrP->isPlaying), DUMP_BOOL(ptrP->isPaused), DUMP_BOOL(ptrP->isForwarding), DUMP_BOOL(ptrP->isSeeking), DUMP_BOOL(ptrP->isCreationPhase)); fprintf(stderr, "\"BackWard\":%d, \"SlowMotion\":%d, \"Speed\":%d, \"AVSync\":%d,", ptrP->BackWard, ptrP->SlowMotion, ptrP->Speed, ptrP->AVSync); fprintf(stderr, " \"isVideo\":%s, \"isAudio\":%s, \"isSubtitle\":%s, \"isDvbSubtitle\":%s, \"isTeletext\":%s, \"mayWriteToFramebuffer\":%s, \"abortRequested\":%s }}\n", \ - DUMP_BOOL(ptrP->isVideo), DUMP_BOOL(ptrP->isAudio), DUMP_BOOL(0), DUMP_BOOL(0), DUMP_BOOL(0), DUMP_BOOL(0), DUMP_BOOL(ptrP->abortRequested)); + DUMP_BOOL(ptrP->isVideo), DUMP_BOOL(ptrP->isAudio), DUMP_BOOL(0), DUMP_BOOL(0), DUMP_BOOL(0), DUMP_BOOL(0), DUMP_BOOL(ptrP->abortRequested)); } break; } diff --git a/libeplayer3-arm/manager/audio.c b/libeplayer3-arm/manager/audio.c index fc7603e..a29687e 100644 --- a/libeplayer3-arm/manager/audio.c +++ b/libeplayer3-arm/manager/audio.c @@ -61,8 +61,6 @@ if (debug_level >= level) printf("[%s:%s] \n" fmt, __FILE__, __FUNCTION__, ## x) #define cERR_AUDIO_MGR_NO_ERROR 0 #define cERR_AUDIO_MGR_ERROR -1 -static const char FILENAME[] = __FILE__; - /* ***************************** */ /* Types */ /* ***************************** */ @@ -85,7 +83,7 @@ static int CurrentTrack = 0; //TRACK[0] as default. static int ManagerAdd(Context_t *context, Track_t track) { - audio_mgr_printf(10, "%s::%s name=\"%s\" encoding=\"%s\" id=%d\n", FILENAME, __FUNCTION__, track.Name, track.Encoding, track.Id); + audio_mgr_printf(10, "%s::%s name=\"%s\" encoding=\"%s\" id=%d\n", __FILE__, __FUNCTION__, track.Name, track.Encoding, track.Id); if (Tracks == NULL) { Tracks = malloc(sizeof(Track_t) * TRACKWRAP); @@ -97,7 +95,7 @@ static int ManagerAdd(Context_t *context, Track_t track) } if (Tracks == NULL) { - audio_mgr_err("%s:%s malloc failed\n", FILENAME, __FUNCTION__); + audio_mgr_err("%s:%s malloc failed\n", __FILE__, __FUNCTION__); return cERR_AUDIO_MGR_ERROR; } int i = 0; @@ -116,14 +114,14 @@ static int ManagerAdd(Context_t *context, Track_t track) } else { - audio_mgr_err("%s:%s TrackCount out if range %d - %d\n", FILENAME, __FUNCTION__, TrackCount, TRACKWRAP); + audio_mgr_err("%s:%s TrackCount out if range %d - %d\n", __FILE__, __FUNCTION__, TrackCount, TRACKWRAP); return cERR_AUDIO_MGR_ERROR; } if (TrackCount > 0) { context->playback->isAudio = 1; } - audio_mgr_printf(10, "%s::%s\n", FILENAME, __FUNCTION__); + audio_mgr_printf(10, "%s::%s\n", __FILE__, __FUNCTION__); return cERR_AUDIO_MGR_NO_ERROR; } @@ -131,13 +129,13 @@ static char **ManagerList(Context_t *context __attribute__((unused))) { int i = 0, j = 0; char **tracklist = NULL; - audio_mgr_printf(10, "%s::%s\n", FILENAME, __FUNCTION__); + audio_mgr_printf(10, "%s::%s\n", __FILE__, __FUNCTION__); if (Tracks != NULL) { tracklist = malloc(sizeof(char *) * ((TrackCount * 2) + 1)); if (tracklist == NULL) { - audio_mgr_err("%s:%s malloc failed\n", FILENAME, __FUNCTION__); + audio_mgr_err("%s:%s malloc failed\n", __FILE__, __FUNCTION__); return NULL; } for (i = 0, j = 0; i < TrackCount; i++, j += 2) @@ -146,13 +144,13 @@ static char **ManagerList(Context_t *context __attribute__((unused))) continue; size_t len = strlen(Tracks[i].Name) + 20; char tmp[len]; - snprintf(tmp, len, "%d %s\n", Tracks[i].Id, Tracks[i].Name); + snprintf(tmp, len, "%d %s", Tracks[i].Id, Tracks[i].Name); tracklist[j] = strdup(tmp); tracklist[j + 1] = strdup(Tracks[i].Encoding); } tracklist[j] = NULL; } - audio_mgr_printf(10, "%s::%s return %p (%d - %d)\n", FILENAME, __FUNCTION__, tracklist, j, TrackCount); + audio_mgr_printf(10, "%s::%s return %p (%d - %d)\n", __FILE__, __FUNCTION__, tracklist, j, TrackCount); return tracklist; } @@ -161,13 +159,13 @@ static TrackDescription_t *ManagerList(Context_t *context __attribute__((unused { int i = 0; TrackDescription_t *tracklist = NULL; - audio_mgr_printf(10, "%s::%s\n", FILENAME, __FUNCTION__); + audio_mgr_printf(10, "%s::%s\n", __FILE__, __FUNCTION__); if (Tracks != NULL) { tracklist = malloc(sizeof(TrackDescription_t) * ((TrackCount) + 1)); if (tracklist == NULL) { - audio_mgr_err("%s:%s malloc failed\n", FILENAME, __FUNCTION__); + audio_mgr_err("%s:%s malloc failed\n", __FILE__, __FUNCTION__); return NULL; } int j = 0; @@ -184,7 +182,7 @@ static TrackDescription_t *ManagerList(Context_t *context __attribute__((unused } tracklist[j].Id = -1; } - //audio_mgr_printf(10, "%s::%s return %p (%d - %d)\n", FILENAME, __FUNCTION__, tracklist, j, TrackCount); + //audio_mgr_printf(10, "%s::%s return %p (%d - %d)\n", __FILE__, __FUNCTION__, tracklist, j, TrackCount); return tracklist; } #endif @@ -192,7 +190,7 @@ static TrackDescription_t *ManagerList(Context_t *context __attribute__((unused static int ManagerDel(Context_t *context) { int i = 0; - audio_mgr_printf(10, "%s::%s\n", FILENAME, __FUNCTION__); + audio_mgr_printf(10, "%s::%s\n", __FILE__, __FUNCTION__); if (Tracks != NULL) { for (i = 0; i < TrackCount; i++) @@ -204,13 +202,13 @@ static int ManagerDel(Context_t *context) } else { - audio_mgr_err("%s::%s nothing to delete!\n", FILENAME, __FUNCTION__); + audio_mgr_err("%s::%s nothing to delete!\n", __FILE__, __FUNCTION__); return cERR_AUDIO_MGR_ERROR; } TrackCount = 0; CurrentTrack = 0; context->playback->isAudio = 0; - audio_mgr_printf(10, "%s::%s return no error\n", FILENAME, __FUNCTION__); + audio_mgr_printf(10, "%s::%s return no error\n", __FILE__, __FUNCTION__); return cERR_AUDIO_MGR_NO_ERROR; } @@ -218,7 +216,7 @@ static int Command(void *_context, ManagerCmd_t command, void *argument) { Context_t *context = (Context_t *) _context; int ret = cERR_AUDIO_MGR_NO_ERROR; - audio_mgr_printf(10, "%s::%s\n", FILENAME, __FUNCTION__); + audio_mgr_printf(10, "%s::%s\n", __FILE__, __FUNCTION__); switch (command) { case MANAGER_ADD: @@ -235,7 +233,7 @@ static int Command(void *_context, ManagerCmd_t command, void *argument) } case MANAGER_GET: { - audio_mgr_printf(20, "%s::%s MANAGER_GET\n", FILENAME, __FUNCTION__); + audio_mgr_printf(20, "%s::%s MANAGER_GET\n", __FILE__, __FUNCTION__); if ((TrackCount > 0) && (CurrentTrack >= 0)) { *((int *)argument) = (int)Tracks[CurrentTrack].Id; @@ -255,9 +253,9 @@ static int Command(void *_context, ManagerCmd_t command, void *argument) if (track) { memset(track, 0, sizeof(TrackDescription_t)); - track->Id = Tracks[CurrentTrack].Id; - track->Name = strdup(Tracks[CurrentTrack].Name); - track->Encoding = strdup(Tracks[CurrentTrack].Encoding); + track->Id = Tracks[CurrentTrack].Id; + track->Name = strdup(Tracks[CurrentTrack].Name); + track->Encoding = strdup(Tracks[CurrentTrack].Encoding); } } else @@ -268,7 +266,7 @@ static int Command(void *_context, ManagerCmd_t command, void *argument) } case MANAGER_GET_TRACK: { - audio_mgr_printf(20, "%s::%s MANAGER_GET_TRACK\n", FILENAME, __FUNCTION__); + audio_mgr_printf(20, "%s::%s MANAGER_GET_TRACK\n", __FILE__, __FUNCTION__); if ((TrackCount > 0) && (CurrentTrack >= 0)) { *((Track_t **)argument) = (Track_t *) &Tracks[CurrentTrack]; @@ -306,7 +304,7 @@ static int Command(void *_context, ManagerCmd_t command, void *argument) case MANAGER_SET: { int i; - audio_mgr_printf(20, "%s::%s MANAGER_SET id=%d\n", FILENAME, __FUNCTION__, *((int *)argument)); + audio_mgr_printf(20, "%s::%s MANAGER_SET id=%d\n", __FILE__, __FUNCTION__, *((int *)argument)); for (i = 0; i < TrackCount; i++) { if (Tracks[i].Id == *((int *)argument)) @@ -317,7 +315,7 @@ static int Command(void *_context, ManagerCmd_t command, void *argument) } if (i == TrackCount) { - audio_mgr_err("%s::%s track id %d unknown\n", FILENAME, __FUNCTION__, *((int *)argument)); + audio_mgr_err("%s::%s track id %d unknown\n", __FILE__, __FUNCTION__, *((int *)argument)); ret = cERR_AUDIO_MGR_ERROR; } break; @@ -337,11 +335,11 @@ static int Command(void *_context, ManagerCmd_t command, void *argument) break; } default: - audio_mgr_err("%s::%s ContainerCmd %d not supported!\n", FILENAME, __FUNCTION__, command); + audio_mgr_err("%s::%s ContainerCmd %d not supported!\n", __FILE__, __FUNCTION__, command); ret = cERR_AUDIO_MGR_ERROR; break; } - audio_mgr_printf(10, "%s:%s: returning %d\n", FILENAME, __FUNCTION__, ret); + audio_mgr_printf(10, "%s:%s: returning %d\n", __FILE__, __FUNCTION__, ret); return ret; } diff --git a/libeplayer3-arm/manager/subtitle.c b/libeplayer3-arm/manager/subtitle.c index 1d219f2..4b64cd6 100644 --- a/libeplayer3-arm/manager/subtitle.c +++ b/libeplayer3-arm/manager/subtitle.c @@ -33,7 +33,6 @@ #define TRACKWRAP 20 -//#define SAM_WITH_DEBUG #ifdef SAM_WITH_DEBUG #define SUBTITLE_MGR_DEBUG #else @@ -60,19 +59,17 @@ if (debug_level >= level) printf(x); } while (0) #define cERR_SUBTITLE_MGR_NO_ERROR 0 #define cERR_SUBTITLE_MGR_ERROR -1 -static const char FILENAME[] = __FILE__; - /* ***************************** */ /* Types */ /* ***************************** */ /* ***************************** */ -/* Varaibles */ +/* Variables */ /* ***************************** */ static Track_t *Tracks = NULL; static int TrackCount = 0; -static int CurrentTrack = -1; //no as default. +static int CurrentTrack = -1; //no as default. /* ***************************** */ /* Prototypes */ @@ -82,23 +79,23 @@ static int CurrentTrack = -1; //no as default. /* Functions */ /* ***************************** */ -static int ManagerAdd(Context_t * context __attribute__((unused)), Track_t track) +static int ManagerAdd(Context_t *context __attribute__((unused)), Track_t track) { - - subtitle_mgr_printf(10, "%s::%s %s %s %d\n", FILENAME, __FUNCTION__, - track.Name, track.Encoding, track.Id); + subtitle_mgr_printf(10, "%s::%s %s %s %d\n", __FILE__, __FUNCTION__, track.Name, track.Encoding, track.Id); if (Tracks == NULL) { Tracks = malloc(sizeof(Track_t) * TRACKWRAP); int i; for (i = 0; i < TRACKWRAP; i++) + { Tracks[i].Id = -1; + } } if (Tracks == NULL) { - subtitle_mgr_err("%s:%s malloc failed\n", FILENAME, __FUNCTION__); + subtitle_mgr_err("%s:%s malloc failed\n", __FILE__, __FUNCTION__); return cERR_SUBTITLE_MGR_ERROR; } @@ -119,23 +116,26 @@ static int ManagerAdd(Context_t * context __attribute__((unused)), Track_t track } else { - - subtitle_mgr_err("%s:%s TrackCount out if range %d - %d\n", - FILENAME, __FUNCTION__, TrackCount, TRACKWRAP); + subtitle_mgr_err("%s:%s TrackCount out if range %d - %d\n", __FILE__, __FUNCTION__, TrackCount, TRACKWRAP); return cERR_SUBTITLE_MGR_ERROR; } - subtitle_mgr_printf(10, "%s::%s\n", FILENAME, __FUNCTION__); + if (TrackCount > 0) + { +// context->playback->isSubtitle = 1; + } + + subtitle_mgr_printf(10, "%s::%s\n", __FILE__, __FUNCTION__); return cERR_SUBTITLE_MGR_NO_ERROR; } -static char **ManagerList(Context_t * context __attribute__ ((unused))) +static char **ManagerList(Context_t *context __attribute__((unused))) { char **tracklist = NULL; int i = 0, j = 0; - subtitle_mgr_printf(10, "%s::%s\n", FILENAME, __FUNCTION__); + subtitle_mgr_printf(10, "%s::%s\n", __FILE__, __FUNCTION__); if (Tracks != NULL) { @@ -143,18 +143,20 @@ static char **ManagerList(Context_t * context __attribute__ ((unused))) if (tracklist == NULL) { - subtitle_mgr_err("%s:%s malloc failed\n", FILENAME, - __FUNCTION__); + subtitle_mgr_err("%s:%s malloc failed\n", __FILE__, __FUNCTION__); return NULL; } for (i = 0, j = 0; i < TrackCount; i++, j += 2) { if (Tracks[i].pending) + { continue; + } + size_t len = strlen(Tracks[i].Name) + 20; char tmp[len]; - snprintf(tmp, len, "%d %s\n", Tracks[i].Id, Tracks[i].Name); + snprintf(tmp, len, "%d %s", Tracks[i].Id, Tracks[i].Name); tracklist[j] = strdup(tmp); tracklist[j + 1] = strdup(Tracks[i].Encoding); } @@ -162,18 +164,16 @@ static char **ManagerList(Context_t * context __attribute__ ((unused))) tracklist[j] = NULL; } - subtitle_mgr_printf(10, "%s::%s return %p (%d - %d)\n", FILENAME, - __FUNCTION__, tracklist, j, TrackCount); + subtitle_mgr_printf(10, "%s::%s return %p (%d - %d)\n", __FILE__, __FUNCTION__, tracklist, j, TrackCount); return tracklist; } -static int ManagerDel(Context_t * context __attribute__((unused))) +static int ManagerDel(Context_t *context __attribute__((unused))) { - int i = 0; - subtitle_mgr_printf(10, "%s::%s\n", FILENAME, __FUNCTION__); + subtitle_mgr_printf(10, "%s::%s\n", __FILE__, __FUNCTION__); if (Tracks != NULL) { @@ -187,16 +187,15 @@ static int ManagerDel(Context_t * context __attribute__((unused))) } else { - subtitle_mgr_err("%s::%s nothing to delete!\n", FILENAME, - __FUNCTION__); + subtitle_mgr_err("%s::%s nothing to delete!\n", __FILE__, __FUNCTION__); return cERR_SUBTITLE_MGR_ERROR; } TrackCount = 0; CurrentTrack = -1; +// context->playback->isSubtitle = 0; - subtitle_mgr_printf(10, "%s::%s return no error\n", FILENAME, - __FUNCTION__); + subtitle_mgr_printf(10, "%s::%s return no error\n", __FILE__, __FUNCTION__); return cERR_SUBTITLE_MGR_NO_ERROR; } @@ -205,120 +204,142 @@ static int Command(Context_t *context, ManagerCmd_t command, void *argument) { int ret = cERR_SUBTITLE_MGR_NO_ERROR; - subtitle_mgr_printf(50, "%s::%s %d\n", FILENAME, __FUNCTION__, - command); + subtitle_mgr_printf(50, "%s::%s %d\n", __FILE__, __FUNCTION__, command); switch (command) { - case MANAGER_ADD: - { - Track_t *track = argument; - ret = ManagerAdd(context, *track); - break; - } - case MANAGER_LIST: - { - container_ffmpeg_update_tracks(context, context->playback->uri, 0); - *((char ***) argument) = (char **) ManagerList(context); - break; - } - case MANAGER_GET: - { - if (TrackCount > 0 && CurrentTrack >= 0) - *((int *) argument) = (int) Tracks[CurrentTrack].Id; - else - *((int *) argument) = (int) -1; - break; - } - case MANAGER_GET_TRACK: - { - //subtitle_mgr_printf(20, "%s::%s MANAGER_GET_TRACK\n", FILENAME, __FUNCTION__); - - if ((TrackCount > 0) && (CurrentTrack >= 0)) + case MANAGER_ADD: { - subtitle_mgr_printf(120, "return %d, %p\n", CurrentTrack, - &Tracks[CurrentTrack]); - *((Track_t **) argument) = - (Track_t *) & Tracks[CurrentTrack]; - } - else - { - subtitle_mgr_printf(20, "return NULL\n"); - *((Track_t **) argument) = NULL; - } - break; - } - case MANAGER_GETENCODING: - { - if (TrackCount > 0 && CurrentTrack >= 0) - *((char **) argument) = - (char *) strdup(Tracks[CurrentTrack].Encoding); - else - *((char **) argument) = (char *) strdup(""); - break; - } - case MANAGER_GETNAME: - { - if (TrackCount > 0 && CurrentTrack >= 0) - *((char **) argument) = - (char *) strdup(Tracks[CurrentTrack].Name); - else - *((char **) argument) = (char *) strdup(""); - break; - } - case MANAGER_SET: - { - int i; - subtitle_mgr_printf(20, "%s::%s MANAGER_SET id=%d\n", FILENAME, - __FUNCTION__, *((int *) argument)); - - if (*((int *) argument) < 0) - { - CurrentTrack = -1; + Track_t *track = argument; + ret = ManagerAdd(context, *track); break; } - - for (i = 0; i < TrackCount; i++) - if (Tracks[i].Id == *((int *) argument)) + case MANAGER_LIST: + { + container_ffmpeg_update_tracks(context, context->playback->uri, 0); + *((char ** *)argument) = (char **)ManagerList(context); + break; + } + case MANAGER_GET: + { + if (TrackCount > 0 && CurrentTrack >= 0) { - CurrentTrack = i; + *((int *)argument) = (int)Tracks[CurrentTrack].Id; + } + else + { + *((int *)argument) = (int) - 1; + } + break; + } + case MANAGER_GET_TRACK_DESC: + { + if ((TrackCount > 0) && (CurrentTrack >= 0)) + { + TrackDescription_t *track = malloc(sizeof(TrackDescription_t)); + *((TrackDescription_t **)argument) = track; + if (track) + { + memset(track, 0, sizeof(TrackDescription_t)); + track->Id = Tracks[CurrentTrack].Id; + track->Name = strdup(Tracks[CurrentTrack].Name); + track->Encoding = strdup(Tracks[CurrentTrack].Encoding); + } + } + else + { + *((TrackDescription_t **)argument) = NULL; + } + break; + } + case MANAGER_GET_TRACK: + { + if ((TrackCount > 0) && (CurrentTrack >= 0)) + { + *((Track_t **)argument) = (Track_t *) &Tracks[CurrentTrack]; + } + else + { + *((Track_t **)argument) = NULL; + } + break; + } + case MANAGER_GETENCODING: + { + if (TrackCount > 0 && CurrentTrack >= 0) + { + *((char **)argument) = (char *)strdup(Tracks[CurrentTrack].Encoding); + } + else + { + *((char **)argument) = (char *)strdup(""); + } + break; + } + case MANAGER_GETNAME: + { + if (TrackCount > 0 && CurrentTrack >= 0) + { + *((char **)argument) = (char *)strdup(Tracks[CurrentTrack].Name); + } + else + { + *((char **)argument) = (char *)strdup(""); + } + break; + } + case MANAGER_SET: + { + int i; + subtitle_mgr_printf(20, "%s::%s MANAGER_SET id=%d\n", __FILE__, __FUNCTION__, *((int *)argument)); + + if (*((int *)argument) < 0) + { + CurrentTrack = -1; break; } - if (i == TrackCount) - { - subtitle_mgr_err("%s::%s track id %d unknown\n", FILENAME, - __FUNCTION__, *((int *) argument)); - ret = cERR_SUBTITLE_MGR_ERROR; + + for (i = 0; i < TrackCount; i++) + { + if (Tracks[i].Id == *((int *)argument)) + { + CurrentTrack = i; + break; + } + } + + if (i == TrackCount) + { + subtitle_mgr_err("%s::%s track id %d unknown\n", __FILE__, __FUNCTION__, *((int *)argument)); + ret = cERR_SUBTITLE_MGR_ERROR; + } + break; } - break; - } - case MANAGER_DEL: - { - ret = ManagerDel(context); - break; - } - case MANAGER_INIT_UPDATE: - { - int i; - for (i = 0; i < TrackCount; i++) - //if (!Tracks[i].is_static) - Tracks[i].pending = 1; - break; - } - default: - subtitle_mgr_err("%s:%s: ConatinerCmd not supported!", FILENAME, - __FUNCTION__); - ret = cERR_SUBTITLE_MGR_ERROR; - break; + case MANAGER_DEL: + { + ret = ManagerDel(context); + break; + } + case MANAGER_INIT_UPDATE: + { + int i; + for (i = 0; i < TrackCount; i++) + { + Tracks[i].pending = 1; + } + break; + } + default: + subtitle_mgr_err("%s:%s: ContainerCmd not supported!", __FILE__, __FUNCTION__); + ret = cERR_SUBTITLE_MGR_ERROR; + break; } - subtitle_mgr_printf(50, "%s:%s: returning %d\n", FILENAME, - __FUNCTION__, ret); + subtitle_mgr_printf(50, "%s:%s: returning %d\n", __FILE__, __FUNCTION__, ret); return ret; } - struct Manager_s SubtitleManager = { "Subtitle", diff --git a/libeplayer3-arm/manager/video.c b/libeplayer3-arm/manager/video.c index ee5ef5f..1c8fcc3 100644 --- a/libeplayer3-arm/manager/video.c +++ b/libeplayer3-arm/manager/video.c @@ -59,8 +59,6 @@ if (debug_level >= level) printf(x); } while (0) #define cERR_VIDEO_MGR_NO_ERROR 0 #define cERR_VIDEO_MGR_ERROR -1 -static const char FILENAME[] = __FILE__; - /* ***************************** */ /* Types */ /* ***************************** */ @@ -85,7 +83,7 @@ static void (* updatedTrackInfoFnc)(void) = NULL; static int ManagerAdd(Context_t *context, Track_t track) { - video_mgr_printf(10, "%s::%s\n", FILENAME, __FUNCTION__); + video_mgr_printf(10, "%s::%s\n", __FILE__, __FUNCTION__); if (Tracks == NULL) { Tracks = malloc(sizeof(Track_t) * TRACKWRAP); @@ -97,7 +95,7 @@ static int ManagerAdd(Context_t *context, Track_t track) } if (Tracks == NULL) { - video_mgr_err("%s:%s malloc failed\n", FILENAME, __FUNCTION__); + video_mgr_err("%s:%s malloc failed\n", __FILE__, __FUNCTION__); return cERR_VIDEO_MGR_ERROR; } int i; @@ -116,14 +114,14 @@ static int ManagerAdd(Context_t *context, Track_t track) } else { - video_mgr_err("%s:%s TrackCount out if range %d - %d\n", FILENAME, __FUNCTION__, TrackCount, TRACKWRAP); + video_mgr_err("%s:%s TrackCount out if range %d - %d\n", __FILE__, __FUNCTION__, TrackCount, TRACKWRAP); return cERR_VIDEO_MGR_ERROR; } if (TrackCount > 0) { context->playback->isVideo = 1; } - video_mgr_printf(10, "%s::%s\n", FILENAME, __FUNCTION__); + video_mgr_printf(10, "%s::%s\n", __FILE__, __FUNCTION__); return cERR_VIDEO_MGR_NO_ERROR; } @@ -131,13 +129,13 @@ static char **ManagerList(Context_t *context __attribute__((unused))) { int i = 0, j = 0; char **tracklist = NULL; - video_mgr_printf(10, "%s::%s\n", FILENAME, __FUNCTION__); + video_mgr_printf(10, "%s::%s\n", __FILE__, __FUNCTION__); if (Tracks != NULL) { tracklist = malloc(sizeof(char *) * ((TrackCount * 2) + 1)); if (tracklist == NULL) { - video_mgr_err("%s:%s malloc failed\n", FILENAME, __FUNCTION__); + video_mgr_err("%s:%s malloc failed\n", __FILE__, __FUNCTION__); return NULL; } for (i = 0, j = 0; i < TrackCount; i++, j += 2) @@ -154,14 +152,14 @@ static char **ManagerList(Context_t *context __attribute__((unused))) } tracklist[j] = NULL; } - video_mgr_printf(10, "%s::%s return %p (%d - %d)\n", FILENAME, __FUNCTION__, tracklist, j, TrackCount); + video_mgr_printf(10, "%s::%s return %p (%d - %d)\n", __FILE__, __FUNCTION__, tracklist, j, TrackCount); return tracklist; } static int ManagerDel(Context_t *context) { int i = 0; - video_mgr_printf(10, "%s::%s\n", FILENAME, __FUNCTION__); + video_mgr_printf(10, "%s::%s\n", __FILE__, __FUNCTION__); if (Tracks != NULL) { for (i = 0; i < TrackCount; i++) @@ -173,21 +171,21 @@ static int ManagerDel(Context_t *context) } else { - video_mgr_err("%s::%s nothing to delete!\n", FILENAME, __FUNCTION__); + video_mgr_err("%s::%s nothing to delete!\n", __FILE__, __FUNCTION__); return cERR_VIDEO_MGR_ERROR; } TrackCount = 0; CurrentTrack = 0; context->playback->isVideo = 0; - video_mgr_printf(10, "%s::%s return no error\n", FILENAME, __FUNCTION__); + video_mgr_printf(10, "%s::%s return no error\n", __FILE__, __FUNCTION__); return cERR_VIDEO_MGR_NO_ERROR; } static int Command(void *_context, ManagerCmd_t command, void *argument) { - Context_t *context = (Context_t *) _context; + Context_t *context = (Context_t *) _context; int ret = cERR_VIDEO_MGR_NO_ERROR; - video_mgr_printf(10, "%s::%s\n", FILENAME, __FUNCTION__); + video_mgr_printf(10, "%s::%s\n", __FILE__, __FUNCTION__); switch (command) { case MANAGER_ADD: @@ -242,7 +240,7 @@ static int Command(void *_context, ManagerCmd_t command, void *argument) } case MANAGER_GET_TRACK: { - video_mgr_printf(20, "%s::%s MANAGER_GET_TRACK\n", FILENAME, __FUNCTION__); + video_mgr_printf(20, "%s::%s MANAGER_GET_TRACK\n", __FILE__, __FUNCTION__); if ((TrackCount > 0) && (CurrentTrack >= 0)) { *((Track_t **)argument) = (Track_t *) &Tracks[CurrentTrack]; @@ -290,7 +288,7 @@ static int Command(void *_context, ManagerCmd_t command, void *argument) } if (i == TrackCount) { - video_mgr_err("%s::%s track id %d unknown\n", FILENAME, __FUNCTION__, *((int *)argument)); + video_mgr_err("%s::%s track id %d unknown\n", __FILE__, __FUNCTION__, *((int *)argument)); ret = cERR_VIDEO_MGR_ERROR; } break; @@ -321,11 +319,11 @@ static int Command(void *_context, ManagerCmd_t command, void *argument) break; } default: - video_mgr_err("%s::%s ContainerCmd %d not supported!\n", FILENAME, __FUNCTION__, command); + video_mgr_err("%s::%s ContainerCmd %d not supported!\n", __FILE__, __FUNCTION__, command); ret = cERR_VIDEO_MGR_ERROR; break; } - video_mgr_printf(10, "%s:%s: returning %d\n", FILENAME, __FUNCTION__, ret); + video_mgr_printf(10, "%s:%s: returning %d\n", __FILE__, __FUNCTION__, ret); return ret; } diff --git a/libeplayer3-arm/output/linuxdvb_mipsel.c b/libeplayer3-arm/output/linuxdvb_mipsel.c index ab01aa2..fd8cd56 100644 --- a/libeplayer3-arm/output/linuxdvb_mipsel.c +++ b/libeplayer3-arm/output/linuxdvb_mipsel.c @@ -58,7 +58,7 @@ #define LINUXDVB_SILENT #endif -static short debug_level = 20; +static unsigned short debug_level = 20; static const char FILENAME[] = __FILE__; @@ -426,7 +426,7 @@ int LinuxDvbReverseDiscontinuity(Context_t *context __attribute__((unused)), int int ret = cERR_LINUXDVB_NO_ERROR; // int dis_type = VIDEO_DISCONTINUITY_CONTINUOUS_REVERSE | *surplus; // linuxdvb_printf(50, "\n"); - // if (ioctl( videofd, VIDEO_DISCONTINUITY, (void*) dis_type) == -1) + // if (ioctl(videofd, VIDEO_DISCONTINUITY, (void*) dis_type) == -1) // { // linuxdvb_err("ioctl failed with errno %d\n", errno); // linuxdvb_err("VIDEO_DISCONTINUITY: %s\n", strerror(errno)); @@ -475,7 +475,7 @@ int LinuxDvbFlush(Context_t *context __attribute__((unused)), char *type) // unsigned char video = !strcmp("video", type); // unsigned char audio = !strcmp("audio", type); // linuxdvb_printf(10, "v%d a%d\n", video, audio); - // if ( (video && videofd != -1) || (audio && audiofd != -1) ) { + // if ((video && videofd != -1) || (audio && audiofd != -1)) { // getLinuxDVBMutex(FILENAME, __FUNCTION__,__LINE__); // if (video && videofd != -1) { // if (ioctl(videofd, VIDEO_FLUSH, NULL) == -1) @@ -723,7 +723,7 @@ int LinuxDvbSwitch(Context_t *context, char *type) if (writer == NULL) { linuxdvb_err("cannot found writer for encoding %s using default\n", Encoding); - // if (ioctl( audiofd, AUDIO_SET_BYPASS_MODE, (void*) AUDIO_ENCODING_MP3) == -1) + // if (ioctl(audiofd, AUDIO_SET_BYPASS_MODE, (void*) AUDIO_ENCODING_MP3) == -1) // { // linuxdvb_err("ioctl failed with errno %d\n", errno); // linuxdvb_err("AUDIO_SET_BYPASS_MODE: %s\n", strerror(errno)); @@ -771,7 +771,7 @@ int LinuxDvbSwitch(Context_t *context, char *type) if (writer == NULL) { linuxdvb_err("cannot found writer for encoding %s using default\n", Encoding); - // if (ioctl( videofd, VIDEO_SET_STREAMTYPE, (void*) VIDEO_ENCODING_AUTO) == -1) + // if (ioctl(videofd, VIDEO_SET_STREAMTYPE, (void*) VIDEO_ENCODING_AUTO) == -1) // { // linuxdvb_err("ioctl failed with errno %d\n", errno); // linuxdvb_err("VIDEO_SET_STREAMTYPE: %s\n", strerror(errno)); @@ -825,7 +825,7 @@ static int Write(void *_context, void *_out) video = !strcmp("video", out->type); audio = !strcmp("audio", out->type); linuxdvb_printf(20, "DataLength=%u PrivateLength=%u Pts=%llu FrameRate=%f\n", - out->len, out->extralen, out->pts, out->frameRate); + out->len, out->extralen, out->pts, out->frameRate); linuxdvb_printf(20, "v%d a%d\n", video, audio); if (video) { diff --git a/libeplayer3-arm/output/linuxdvb_sh4.c b/libeplayer3-arm/output/linuxdvb_sh4.c index f11de46..efbc39c 100644 --- a/libeplayer3-arm/output/linuxdvb_sh4.c +++ b/libeplayer3-arm/output/linuxdvb_sh4.c @@ -59,7 +59,7 @@ static const char FILENAME[] = __FILE__; #ifdef LINUXDVB_DEBUG #define linuxdvb_printf(level, fmt, x...) do { \ -if (debug_level >= level) printf("[%s:%s] " fmt, __FILE__, __FUNCTION__, ## x ); } while (0) +if (debug_level >= level) printf("[%s:%s] " fmt, __FILE__, __FUNCTION__, ## x); } while (0) #else #define linuxdvb_printf(x...) #endif @@ -828,7 +828,7 @@ static int Write(void *_context, void *_out) video = !strcmp("video", out->type); audio = !strcmp("audio", out->type); linuxdvb_printf(20, "DataLength=%u PrivateLength=%u Pts=%llu FrameRate=%f\n", - out->len, out->extralen, out->pts, out->frameRate); + out->len, out->extralen, out->pts, out->frameRate); linuxdvb_printf(20, "v%d a%d\n", video, audio); if (video) { diff --git a/libeplayer3-arm/output/output.c b/libeplayer3-arm/output/output.c index 47ef2e2..cf3640e 100644 --- a/libeplayer3-arm/output/output.c +++ b/libeplayer3-arm/output/output.c @@ -57,8 +57,6 @@ if (debug_level >= level) fprintf(stderr, x); } while (0) #define cERR_OUTPUT_NO_ERROR 0 #define cERR_OUTPUT_INTERNAL_ERROR -1 -static const char *FILENAME = "output.c"; - /* ***************************** */ /* Types */ /* ***************************** */ @@ -85,7 +83,7 @@ static Output_t *AvailableOutput[] = static void printOutputCapabilities() { int i, j; - output_printf(10, "%s::%s\n", FILENAME, __FUNCTION__); + output_printf(10, "%s::%s\n", __FILE__, __FUNCTION__); output_printf(10, "Capabilities:\n"); for (i = 0; AvailableOutput[i] != NULL; i++) { @@ -105,7 +103,7 @@ static void printOutputCapabilities() static void OutputAdd(Context_t *context, char *port) { int i, j; - output_printf(10, "%s::%s\n", FILENAME, __FUNCTION__); + output_printf(10, "%s::%s\n", __FILE__, __FUNCTION__); for (i = 0; AvailableOutput[i] != NULL; i++) { for (j = 0; AvailableOutput[i]->Capabilities[j] != NULL; j++) @@ -134,7 +132,7 @@ static void OutputAdd(Context_t *context, char *port) static void OutputDel(Context_t *context, char *port) { - output_printf(10, "%s::%s\n", FILENAME, __FUNCTION__); + output_printf(10, "%s::%s\n", __FILE__, __FUNCTION__); if (!strcmp("audio", port)) { context->output->audio = NULL; @@ -151,9 +149,9 @@ static void OutputDel(Context_t *context, char *port) static int Command(void *_context, OutputCmd_t command, void *argument) { - Context_t *context = (Context_t *) _context; + Context_t *context = (Context_t *) _context; int ret = cERR_OUTPUT_NO_ERROR; - output_printf(10, "%s::%s Command %d\n", FILENAME, __FUNCTION__, command); + output_printf(10, "%s::%s Command %d\n", __FILE__, __FUNCTION__, command); switch (command) { case OUTPUT_OPEN: @@ -542,11 +540,11 @@ static int Command(void *_context, OutputCmd_t command, void *argument) } } default: - output_err("%s::%s OutputCmd %d not supported!\n", FILENAME, __FUNCTION__, command); + output_err("%s::%s OutputCmd %d not supported!\n", __FILE__, __FUNCTION__, command); ret = cERR_OUTPUT_INTERNAL_ERROR; break; } - output_printf(10, "%s::%s exiting with value %d\n", FILENAME, __FUNCTION__, ret); + output_printf(10, "%s::%s exiting with value %d\n", __FILE__, __FUNCTION__, ret); return ret; } diff --git a/libeplayer3-arm/output/output_subtitle.c b/libeplayer3-arm/output/output_subtitle.c index 607bb4b..411a30d 100644 --- a/libeplayer3-arm/output/output_subtitle.c +++ b/libeplayer3-arm/output/output_subtitle.c @@ -68,8 +68,6 @@ if (debug_level >= level) printf("[%s:%s] " fmt, __FILE__, __FUNCTION__, ## x); #define cERR_SUBTITLE_NO_ERROR 0 #define cERR_SUBTITLE_ERROR -1 -static const char FILENAME[] = __FILE__; - /* Number, Style, Name,, MarginL, MarginR, MarginV, Effect,, Text @@ -192,7 +190,7 @@ static int Flush() static int Write(void *_context, void *data) { - Context_t *context = (Context_t *)_context; + Context_t *context = (Context_t *)_context; char *Encoding = NULL; SubtitleOut_t *out = NULL; int32_t curtrackid = -1; @@ -226,7 +224,7 @@ static int Write(void *_context, void *data) else { subtitle_err("unknown encoding %s\n", Encoding); - return cERR_SUBTITLE_ERROR; + return cERR_SUBTITLE_ERROR; } subtitle_printf(10, "<\n"); return cERR_SUBTITLE_NO_ERROR; @@ -261,7 +259,7 @@ static int32_t subtitle_Close(Context_t *context __attribute__((unused))) static int Command(void *_context, OutputCmd_t command, void *argument) { - Context_t *context = (Context_t *) _context; + Context_t *context = (Context_t *) _context; int ret = cERR_SUBTITLE_NO_ERROR; subtitle_printf(50, "%d\n", command); switch (command) diff --git a/libeplayer3-arm/output/writer/mipsel/aac.c b/libeplayer3-arm/output/writer/mipsel/aac.c index e6d0fd3..3b6945b 100644 --- a/libeplayer3-arm/output/writer/mipsel/aac.c +++ b/libeplayer3-arm/output/writer/mipsel/aac.c @@ -182,7 +182,7 @@ static int _writeData(void *_call, int type) else // check LOAS header { if (!(call->len > 2 && call->data[0] == 0x56 && (call->data[1] >> 4) == 0xe && - (AV_RB16(call->data + 1) & 0x1FFF) + 3 == call->len)) + (AV_RB16(call->data + 1) & 0x1FFF) + 3 == call->len)) { aac_err("parsing Data with wrong latm header. ignoring...\n"); return 0; @@ -193,9 +193,9 @@ static int _writeData(void *_call, int type) unsigned int HeaderLength = InsertPesHeader(PesHeader, call->len, MPEG_AUDIO_PES_START_CODE, call->Pts, 0); struct iovec iov[2]; iov[0].iov_base = PesHeader; - iov[0].iov_len = HeaderLength; + iov[0].iov_len = HeaderLength; iov[1].iov_base = call->data; - iov[1].iov_len = call->len; + iov[1].iov_len = call->len; return writev_with_retry(call->fd, iov, 2); } @@ -219,7 +219,7 @@ static int writeDataADTS(void *_call) return 0; } if ((call->private_data && 0 == strncmp("ADTS", call->private_data, call->private_size)) || - HasADTSHeader(call->data, call->len)) + HasADTSHeader(call->data, call->len)) { return _writeData(_call, 0); } @@ -294,7 +294,7 @@ static int writeDataLATM(void *_call) if (ret) { printf("%02x %02x %02x %02x %02x %02x %02x %02x\n", (int)call->data[0], (int)call->data[1], (int)call->data[2], (int)call->data[3], \ - (int)call->data[4], (int)call->data[5], (int)call->data[6], (int)call->data[7]); + (int)call->data[4], (int)call->data[5], (int)call->data[6], (int)call->data[7]); aac_err("latm_decode_extradata failed. ignoring...\n"); return 0; } diff --git a/libeplayer3-arm/output/writer/mipsel/ac3.c b/libeplayer3-arm/output/writer/mipsel/ac3.c index fb1c87e..017b2b2 100644 --- a/libeplayer3-arm/output/writer/mipsel/ac3.c +++ b/libeplayer3-arm/output/writer/mipsel/ac3.c @@ -99,7 +99,7 @@ static int writeData(void *_call) { WriterAVCallData_t *call = (WriterAVCallData_t *) _call; ac3_printf(10, "\n"); - unsigned char PesHeader[PES_MAX_HEADER_SIZE]; + unsigned char PesHeader[PES_MAX_HEADER_SIZE]; if (call == NULL) { ac3_err("call data is NULL...\n"); @@ -118,7 +118,7 @@ static int writeData(void *_call) } struct iovec iov[3]; iov[0].iov_base = PesHeader; - iov[0].iov_len = InsertPesHeader(PesHeader, call->len, MPEG_AUDIO_PES_START_CODE, call->Pts, 0); //+ sizeof(AC3_SYNC_HEADER) + iov[0].iov_len = InsertPesHeader(PesHeader, call->len, MPEG_AUDIO_PES_START_CODE, call->Pts, 0); //+ sizeof(AC3_SYNC_HEADER) //PesHeader[6] = 0x81; //PesHeader[7] = 0x80; //PesHeader[8] = 0x09; diff --git a/libeplayer3-arm/output/writer/mipsel/divx3.c b/libeplayer3-arm/output/writer/mipsel/divx3.c index f933f1a..cc9f93a 100644 --- a/libeplayer3-arm/output/writer/mipsel/divx3.c +++ b/libeplayer3-arm/output/writer/mipsel/divx3.c @@ -106,6 +106,7 @@ static uint8_t brcm_divx311_sequence_header[] = /* ***************************** */ /* MISC Functions */ /* ***************************** */ + static int reset() { initialHeader = 1; @@ -146,11 +147,11 @@ static int writeData(void *_call) data += 38; data[0] = B_GET_BITS(width, 11, 4); data[1] = B_SET_BITS("width [3..0]", B_GET_BITS(width, 3, 0), 7, 4) | - B_SET_BITS("'10'", 0x02, 3, 2) | - B_SET_BITS("height [11..10]", B_GET_BITS(height, 11, 10), 1, 0); + B_SET_BITS("'10'", 0x02, 3, 2) | + B_SET_BITS("height [11..10]", B_GET_BITS(height, 11, 10), 1, 0); data[2] = B_GET_BITS(height, 9, 2); data[3] = B_SET_BITS("height [1.0]", B_GET_BITS(height, 1, 0), 7, 6) | - B_SET_BITS("'100000'", 0x20, 5, 0); + B_SET_BITS("'100000'", 0x20, 5, 0); iov[ic].iov_base = brcm_divx311_sequence_header; iov[ic++].iov_len = sizeof(brcm_divx311_sequence_header); } diff --git a/libeplayer3-arm/output/writer/mipsel/h263.c b/libeplayer3-arm/output/writer/mipsel/h263.c index 259d77e..ab79368 100644 --- a/libeplayer3-arm/output/writer/mipsel/h263.c +++ b/libeplayer3-arm/output/writer/mipsel/h263.c @@ -69,6 +69,7 @@ if (debug_level >= level) printf("[%s:%s] " fmt, __FILE__, __FUNCTION__, ## x); #else #define h263_err(fmt, x...) #endif + /* ***************************** */ /* Types */ /* ***************************** */ diff --git a/libeplayer3-arm/output/writer/mipsel/h264.c b/libeplayer3-arm/output/writer/mipsel/h264.c index 36cf343..1f766e7 100644 --- a/libeplayer3-arm/output/writer/mipsel/h264.c +++ b/libeplayer3-arm/output/writer/mipsel/h264.c @@ -72,7 +72,7 @@ if (debug_level >= level) printf("[%s:%s] " fmt, __FILE__, __FUNCTION__, ## x); #define h264_err(fmt, x...) #endif -#define IOVEC_SIZE 128 +#define IOVEC_SIZE 128 /* ***************************** */ /* Types */ @@ -314,8 +314,8 @@ static int writeData(void *_call) } /* AnnexA */ if (!avc3 && ((1 < call->private_size && 0 == call->private_data[0]) || - (call->len > 3) && ((call->data[0] == 0x00 && call->data[1] == 0x00 && call->data[2] == 0x00 && call->data[3] == 0x01) || - (call->data[0] == 0xff && call->data[1] == 0xff && call->data[2] == 0xff && call->data[3] == 0xff)))) + (call->len > 3) && ((call->data[0] == 0x00 && call->data[1] == 0x00 && call->data[2] == 0x00 && call->data[3] == 0x01) || + (call->data[0] == 0xff && call->data[1] == 0xff && call->data[2] == 0xff && call->data[3] == 0xff)))) { uint32_t PacketLength = 0; uint32_t FakeStartCode = (call->Version << 8) | PES_VERSION_FAKE_START_CODE; diff --git a/libeplayer3-arm/output/writer/mipsel/h265.c b/libeplayer3-arm/output/writer/mipsel/h265.c index 32190e4..87cc830 100644 --- a/libeplayer3-arm/output/writer/mipsel/h265.c +++ b/libeplayer3-arm/output/writer/mipsel/h265.c @@ -198,7 +198,7 @@ static int writeData(void *_call) h264_err("file pointer < 0. ignoring ...\n"); return 0; } - if (call->InfoFlags & 0x1) // TS container + if (call->InfoFlags & 0x1) // TS container { h264_printf(10, "H265 simple inject method!\n"); uint32_t PacketLength = 0; diff --git a/libeplayer3-arm/output/writer/mipsel/pcm.c b/libeplayer3-arm/output/writer/mipsel/pcm.c index 524cf29..00e6f31 100644 --- a/libeplayer3-arm/output/writer/mipsel/pcm.c +++ b/libeplayer3-arm/output/writer/mipsel/pcm.c @@ -266,8 +266,7 @@ static int32_t writeData(void *_call) iov[1].iov_len = fixed_buffersize; writev_with_retry(call->fd, iov, 2); fixed_buffertimestamp += fixed_bufferduration; - int g_fd_dump = open("/hdd/lpcm/ffmpeg.pes", O_CREAT | - O_RDWR | O_APPEND, S_IRUSR | S_IWUSR); + int g_fd_dump = open("/hdd/lpcm/ffmpeg.pes", O_CREAT | O_RDWR | O_APPEND, S_IRUSR | S_IWUSR); writev_with_retry(g_fd_dump, iov, 2); close(g_fd_dump); } diff --git a/libeplayer3-arm/output/writer/mipsel/vc1.c b/libeplayer3-arm/output/writer/mipsel/vc1.c index 3fd5c96..c591011 100644 --- a/libeplayer3-arm/output/writer/mipsel/vc1.c +++ b/libeplayer3-arm/output/writer/mipsel/vc1.c @@ -100,6 +100,7 @@ static video_codec_data_t videocodecdata = {0, 0}; /* ***************************** */ /* MISC Functions */ /* ***************************** */ + static int reset() { initialHeader = 1; @@ -153,8 +154,8 @@ static int writeData(void *_call) } } uint8_t needFrameStartCode = 0; - if (sizeof(Vc1FrameStartCode) >= call->len - || memcmp(call->data, Vc1FrameStartCode, sizeof(Vc1FrameStartCode)) != 0) + if (sizeof(Vc1FrameStartCode) >= call->len || + memcmp(call->data, Vc1FrameStartCode, sizeof(Vc1FrameStartCode)) != 0) { needFrameStartCode = 1; PacketLength += sizeof(Vc1FrameStartCode); diff --git a/libeplayer3-arm/output/writer/mipsel/wmv.c b/libeplayer3-arm/output/writer/mipsel/wmv.c index 7658bce..7722818 100644 --- a/libeplayer3-arm/output/writer/mipsel/wmv.c +++ b/libeplayer3-arm/output/writer/mipsel/wmv.c @@ -98,6 +98,7 @@ static video_codec_data_t videocodecdata = {0, 0}; /* ***************************** */ /* MISC Functions */ /* ***************************** */ + static int reset() { initialHeader = 1; @@ -159,8 +160,8 @@ static int writeData(void *_call) } } uint8_t needFrameStartCode = 0; - if (sizeof(Vc1FrameStartCode) >= call->len - || memcmp(call->data, Vc1FrameStartCode, sizeof(Vc1FrameStartCode)) != 0) + if (sizeof(Vc1FrameStartCode) >= call->len || + memcmp(call->data, Vc1FrameStartCode, sizeof(Vc1FrameStartCode)) != 0) { needFrameStartCode = 1; PacketLength += sizeof(Vc1FrameStartCode); diff --git a/libeplayer3-arm/output/writer/mipsel/writer.c b/libeplayer3-arm/output/writer/mipsel/writer.c index ae0d2f4..fa9afe2 100644 --- a/libeplayer3-arm/output/writer/mipsel/writer.c +++ b/libeplayer3-arm/output/writer/mipsel/writer.c @@ -99,6 +99,7 @@ static Writer_t *AvailableWriter[] = /* ***************************** */ /* Functions */ /* ***************************** */ + ssize_t write_with_retry(int fd, const void *buf, size_t size) { ssize_t ret; diff --git a/libeplayer3-arm/output/writer/sh4/aac.c b/libeplayer3-arm/output/writer/sh4/aac.c index a7aded4..6eeab11 100644 --- a/libeplayer3-arm/output/writer/sh4/aac.c +++ b/libeplayer3-arm/output/writer/sh4/aac.c @@ -180,7 +180,7 @@ static int _writeData(void *_call, int type) else // check LOAS header { if (!(call->len > 2 && call->data[0] == 0x56 && (call->data[1] >> 4) == 0xe && - (AV_RB16(call->data + 1) & 0x1FFF) + 3 == call->len)) + (AV_RB16(call->data + 1) & 0x1FFF) + 3 == call->len)) { aac_err("parsing Data with wrong latm header. ignoring...\n"); return 0; @@ -217,7 +217,7 @@ static int writeDataADTS(void *_call) return 0; } if ((call->private_data && 0 == strncmp("ADTS", call->private_data, call->private_size)) || - HasADTSHeader(call->data, call->len)) + HasADTSHeader(call->data, call->len)) { return _writeData(_call, 0); } @@ -291,7 +291,7 @@ static int writeDataLATM(void *_call) if (ret) { printf("%02x %02x %02x %02x %02x %02x %02x %02x\n", (int)call->data[0], (int)call->data[1], (int)call->data[2], (int)call->data[3], \ - (int)call->data[4], (int)call->data[5], (int)call->data[6], (int)call->data[7]); + (int)call->data[4], (int)call->data[5], (int)call->data[6], (int)call->data[7]); aac_err("latm_decode_extradata failed. ignoring...\n"); return 0; } diff --git a/libeplayer3-arm/output/writer/sh4/h264.c b/libeplayer3-arm/output/writer/sh4/h264.c index f86e06f..482b219 100644 --- a/libeplayer3-arm/output/writer/sh4/h264.c +++ b/libeplayer3-arm/output/writer/sh4/h264.c @@ -52,6 +52,7 @@ /* ***************************** */ /* Makros/Constants */ /* ***************************** */ + #ifdef SAM_WITH_DEBUG #define H264_DEBUG #else @@ -232,8 +233,8 @@ static int32_t writeData(void *_call) } /* AnnexA */ if (!avc3 && ((1 < call->private_size && 0 == call->private_data[0]) || - (call->len > 3) && ((call->data[0] == 0x00 && call->data[1] == 0x00 && call->data[2] == 0x00 && call->data[3] == 0x01) || - (call->data[0] == 0xff && call->data[1] == 0xff && call->data[2] == 0xff && call->data[3] == 0xff)))) + (call->len > 3) && ((call->data[0] == 0x00 && call->data[1] == 0x00 && call->data[2] == 0x00 && call->data[3] == 0x01) || + (call->data[0] == 0xff && call->data[1] == 0xff && call->data[2] == 0xff && call->data[3] == 0xff)))) { uint32_t PacketLength = 0; uint32_t FakeStartCode = /*(call->Version << 8) | */PES_VERSION_FAKE_START_CODE; @@ -401,7 +402,7 @@ static int32_t writeData(void *_call) if (NalStart + NalLength > SampleSize) { h264_printf(20, "nal length past end of buffer - size %u frame offset %u left %u\n", - NalLength, NalStart, SampleSize - NalStart); + NalLength, NalStart, SampleSize - NalStart); NalStart = SampleSize; } else diff --git a/libeplayer3-arm/output/writer/sh4/mpeg2.c b/libeplayer3-arm/output/writer/sh4/mpeg2.c index 063f301..2fd8ad6 100644 --- a/libeplayer3-arm/output/writer/sh4/mpeg2.c +++ b/libeplayer3-arm/output/writer/sh4/mpeg2.c @@ -120,7 +120,7 @@ static int writeData(void *_call) while (Position < call->len) { int32_t PacketLength = (call->len - Position) <= MAX_PES_PACKET_SIZE ? - (call->len - Position) : MAX_PES_PACKET_SIZE; + (call->len - Position) : MAX_PES_PACKET_SIZE; int32_t Remaining = call->len - Position - PacketLength; mpeg2_printf(20, "PacketLength=%d, Remaining=%d, Position=%d\n", PacketLength, Remaining, Position); struct iovec iov[2]; diff --git a/libeplayer3-arm/output/writer/sh4/pcm.c b/libeplayer3-arm/output/writer/sh4/pcm.c index 7a17231..5b752dd 100644 --- a/libeplayer3-arm/output/writer/sh4/pcm.c +++ b/libeplayer3-arm/output/writer/sh4/pcm.c @@ -119,11 +119,11 @@ static uint32_t breakBufferFillSize = 0; static int32_t prepareClipPlay(int32_t uNoOfChannels, int32_t uSampleRate, int32_t uBitsPerSample, uint8_t bLittleEndian __attribute__((unused))) { printf("rate: %d ch: %d bits: %d (%d bps)\n", - uSampleRate/*Format->dwSamplesPerSec*/, - uNoOfChannels/*Format->wChannels*/, - uBitsPerSample/*Format->wBitsPerSample*/, - (uBitsPerSample/*Format->wBitsPerSample*/ / 8) - ); + uSampleRate/*Format->dwSamplesPerSec*/, + uNoOfChannels/*Format->wChannels*/, + uBitsPerSample/*Format->wBitsPerSample*/, + (uBitsPerSample/*Format->wBitsPerSample*/ / 8) + ); SubFrameLen = 0; SubFramesPerPES = 0; breakBufferFillSize = 0; diff --git a/libeplayer3-arm/output/writer/sh4/vc1.c b/libeplayer3-arm/output/writer/sh4/vc1.c index e51a267..baa8129 100644 --- a/libeplayer3-arm/output/writer/sh4/vc1.c +++ b/libeplayer3-arm/output/writer/sh4/vc1.c @@ -51,15 +51,15 @@ /* Makros/Constants */ /* ***************************** */ -#define WMV3_PRIVATE_DATA_LENGTH 4 +#define WMV3_PRIVATE_DATA_LENGTH 4 -#define METADATA_STRUCT_A_START 12 -#define METADATA_STRUCT_B_START 24 -#define METADATA_STRUCT_B_FRAMERATE_START 32 -#define METADATA_STRUCT_C_START 8 +#define METADATA_STRUCT_A_START 12 +#define METADATA_STRUCT_B_START 24 +#define METADATA_STRUCT_B_FRAMERATE_START 32 +#define METADATA_STRUCT_C_START 8 -#define VC1_SEQUENCE_LAYER_METADATA_START_CODE 0x80 -#define VC1_FRAME_START_CODE 0x0d +#define VC1_SEQUENCE_LAYER_METADATA_START_CODE 0x80 +#define VC1_FRAME_START_CODE 0x0d #ifdef SAM_WITH_DEBUG #define VC1_DEBUG @@ -87,9 +87,9 @@ if (debug_level >= level) printf("[%s:%s] " fmt, __FILE__, __FUNCTION__, ## x); /* Types */ /* ***************************** */ -static const unsigned char SequenceLayerStartCode[] = {0x00, 0x00, 0x01, VC1_SEQUENCE_LAYER_METADATA_START_CODE}; +static const unsigned char SequenceLayerStartCode[] = {0x00, 0x00, 0x01, VC1_SEQUENCE_LAYER_METADATA_START_CODE}; -static const unsigned char Metadata[] = +static const unsigned char Metadata[] = { 0x00, 0x00, 0x00, 0xc5, 0x04, 0x00, 0x00, 0x00, @@ -103,7 +103,7 @@ static const unsigned char Metadata[] = }; /* ***************************** */ -/* Varaibles */ +/* Variables */ /* ***************************** */ static int initialHeader = 1; @@ -199,7 +199,7 @@ static int writeData(void *_call) while (Position < call->len) { int32_t PacketLength = (call->len - Position) <= MAX_PES_PACKET_SIZE ? - (call->len - Position) : MAX_PES_PACKET_SIZE; + (call->len - Position) : MAX_PES_PACKET_SIZE; int32_t Remaining = call->len - Position - PacketLength; vc1_printf(20, "PacketLength=%d, Remaining=%d, Position=%d\n", PacketLength, Remaining, Position); uint8_t PesHeader[PES_MAX_HEADER_SIZE]; diff --git a/libeplayer3-arm/output/writer/sh4/wmv.c b/libeplayer3-arm/output/writer/sh4/wmv.c index bcfbb0d..cc61134 100644 --- a/libeplayer3-arm/output/writer/sh4/wmv.c +++ b/libeplayer3-arm/output/writer/sh4/wmv.c @@ -51,7 +51,7 @@ /* Makros/Constants */ /* ***************************** */ -#define WMV3_PRIVATE_DATA_LENGTH 4 +#define WMV3_PRIVATE_DATA_LENGTH 4 #define METADATA_STRUCT_A_START 12 #define METADATA_STRUCT_B_START 24 @@ -149,7 +149,7 @@ static int writeData(void *_call) wmv_printf(10, "VideoPts %lld\n", call->Pts); wmv_printf(10, "Got Private Size %d\n", call->private_size); memcpy(private_data.privateData, call->private_data, - call->private_size > WMV3_PRIVATE_DATA_LENGTH ? WMV3_PRIVATE_DATA_LENGTH : call->private_size); + call->private_size > WMV3_PRIVATE_DATA_LENGTH ? WMV3_PRIVATE_DATA_LENGTH : call->private_size); private_data.width = call->Width; private_data.height = call->Height; private_data.framerate = call->FrameRate; @@ -185,7 +185,7 @@ static int writeData(void *_call) *PesPtr++ = (crazyFramerate >> 16) & 0xff; *PesPtr++ = crazyFramerate >> 24; MetadataLength = PesPtr - &PesPacket[PES_MIN_HEADER_SIZE]; - int HeaderLength = InsertPesHeader(PesPacket, MetadataLength, VC1_VIDEO_PES_START_CODE, INVALID_PTS_VALUE, 0); + int HeaderLength = InsertPesHeader(PesPacket, MetadataLength, VC1_VIDEO_PES_START_CODE, INVALID_PTS_VALUE, 0); len = write(call->fd, PesPacket, HeaderLength + MetadataLength); initialHeader = 0; } @@ -196,7 +196,7 @@ static int writeData(void *_call) while (Position < call->len) { int PacketLength = (call->len - Position) <= MAX_PES_PACKET_SIZE ? - (call->len - Position) : MAX_PES_PACKET_SIZE; + (call->len - Position) : MAX_PES_PACKET_SIZE; int Remaining = call->len - Position - PacketLength; wmv_printf(20, "PacketLength=%d, Remaining=%d, Position=%d\n", PacketLength, Remaining, Position); unsigned char PesHeader[PES_MAX_HEADER_SIZE]; @@ -207,11 +207,10 @@ static int writeData(void *_call) { unsigned int PesLength; unsigned int PrivateHeaderLength; - PrivateHeaderLength = InsertVideoPrivateDataHeader(&PesHeader[HeaderLength], - call->len); + PrivateHeaderLength = InsertVideoPrivateDataHeader(&PesHeader[HeaderLength], call->len); /* Update PesLength */ PesLength = PesHeader[PES_LENGTH_BYTE_0] + - (PesHeader[PES_LENGTH_BYTE_1] << 8) + PrivateHeaderLength; + (PesHeader[PES_LENGTH_BYTE_1] << 8) + PrivateHeaderLength; PesHeader[PES_LENGTH_BYTE_0] = PesLength & 0xff; PesHeader[PES_LENGTH_BYTE_1] = (PesLength >> 8) & 0xff; PesHeader[PES_HEADER_DATA_LENGTH_BYTE] += PrivateHeaderLength; diff --git a/libeplayer3-arm/playback/playback.c b/libeplayer3-arm/playback/playback.c index 640866a..1c8a668 100644 --- a/libeplayer3-arm/playback/playback.c +++ b/libeplayer3-arm/playback/playback.c @@ -175,9 +175,9 @@ static int PlaybackOpen(Context_t *context, PlayFiles_t *pFiles) return cERR_PLAYBACK_ERROR; } pFiles->szFirstFile = context->playback->uri; - if ((context->container->Command(context, CONTAINER_ADD, extension) < 0) - || (!context->container->selectedContainer) - || (context->container->selectedContainer->Command(context, CONTAINER_INIT, pFiles) < 0)) + if ((context->container->Command(context, CONTAINER_ADD, extension) < 0) || + (!context->container->selectedContainer) || + (context->container->selectedContainer->Command(context, CONTAINER_INIT, pFiles) < 0)) { playback_err("CONTAINER_ADD failed\n"); return cERR_PLAYBACK_ERROR; @@ -307,8 +307,8 @@ static int32_t PlaybackContinue(Context_t *context) int32_t ret = cERR_PLAYBACK_NO_ERROR; playback_printf(10, "\n"); if (context->playback->isPlaying && - (context->playback->isPaused || context->playback->isForwarding || - context->playback->BackWard || context->playback->SlowMotion)) + (context->playback->isPaused || context->playback->isForwarding || + context->playback->BackWard || context->playback->SlowMotion)) { if (context->playback->SlowMotion) context->output->Command(context, OUTPUT_CLEAR, NULL); @@ -409,6 +409,111 @@ static int32_t PlaybackTerminate(Context_t *context) return ret; } +static int PlaybackFastForward(Context_t *context, int *speed) +{ + int32_t ret = cERR_PLAYBACK_NO_ERROR; + playback_printf(10, "speed %d\n", *speed); + /* Audio only forwarding not supported */ + if (context->playback->isVideo && !context->playback->isHttp && !context->playback->BackWard && (!context->playback->isPaused || context->playback->isPlaying)) + { + if ((*speed <= 0) || (*speed > cMaxSpeed_ff)) + { + playback_err("speed %d out of range (1 - %d) \n", *speed, cMaxSpeed_ff); + return cERR_PLAYBACK_ERROR; + } + context->playback->isForwarding = 1; + context->playback->Speed = *speed; + playback_printf(20, "Speed: %d x {%d}\n", *speed, context->playback->Speed); + context->output->Command(context, OUTPUT_FASTFORWARD, NULL); + } + else + { + playback_err("fast forward not possible\n"); + ret = cERR_PLAYBACK_ERROR; + } + playback_printf(10, "exiting with value %d\n", ret); + return ret; +} + +static int PlaybackFastBackward(Context_t *context, int *speed) +{ + int32_t ret = cERR_PLAYBACK_NO_ERROR; + playback_printf(10, "speed = %d\n", *speed); + /* Audio only reverse play not supported */ + if (context->playback->isVideo && !context->playback->isForwarding && + (!context->playback->isPaused || context->playback->isPlaying)) + { + if ((*speed > 0) || (*speed < cMaxSpeed_fr)) + { + playback_err("speed %d out of range (0 - %d) \n", *speed, cMaxSpeed_fr); + return cERR_PLAYBACK_ERROR; + } + if (*speed == 0) + { + context->playback->BackWard = 0; + context->playback->Speed = 0; /* reverse end */ + } + else + { + context->playback->isSeeking = 1; + context->playback->Speed = *speed; + context->playback->BackWard = 2 ^ (*speed); + playback_printf(1, "S %d B %f\n", context->playback->Speed, context->playback->BackWard); + } + context->output->Command(context, OUTPUT_AUDIOMUTE, "1"); + context->output->Command(context, OUTPUT_CLEAR, NULL); + if (context->output->Command(context, OUTPUT_REVERSE, NULL) < 0) + { + playback_err("OUTPUT_REVERSE failed\n"); + context->playback->BackWard = 0; + context->playback->Speed = 1; + context->playback->isSeeking = 0; + ret = cERR_PLAYBACK_ERROR; + } + } + else + { + playback_err("fast backward not possible\n"); + ret = cERR_PLAYBACK_ERROR; + } + context->playback->isSeeking = 0; + playback_printf(10, "exiting with value %d\n", ret); + return ret; +} + +static int32_t PlaybackSlowMotion(Context_t *context, int *speed) +{ + int32_t ret = cERR_PLAYBACK_NO_ERROR; + playback_printf(10, "\n"); + //Audio only forwarding not supported + if (context->playback->isVideo && !context->playback->isHttp && context->playback->isPlaying) + { + if (context->playback->isPaused) + PlaybackContinue(context); + switch (*speed) + { + case 2: + context->playback->SlowMotion = 2; + break; + case 4: + context->playback->SlowMotion = 4; + break; + case 8: + context->playback->SlowMotion = 8; + break; + } + playback_printf(20, "SlowMotion: %d x {%d}\n", *speed, context->playback->SlowMotion); + context->output->Command(context, OUTPUT_SLOWMOTION, NULL); + } + else + { + playback_err("slowmotion not possible\n"); + ret = cERR_PLAYBACK_ERROR; + } + playback_printf(10, "exiting with value %d\n", ret); + return ret; +} + static int32_t PlaybackSeek(Context_t *context, int64_t *pos, uint8_t absolute) { int32_t ret = cERR_PLAYBACK_NO_ERROR; @@ -678,6 +783,21 @@ static int32_t Command(void *_context, PlaybackCmd_t command, void *argument) ret = PlaybackInfo(context, (char **)argument); break; } + case PLAYBACK_SLOWMOTION: + { + ret = PlaybackSlowMotion(context, (int *)argument); + break; + } + case PLAYBACK_FASTBACKWARD: + { + ret = PlaybackFastBackward(context, (int *)argument); + break; + } + case PLAYBACK_FASTFORWARD: + { + ret = PlaybackFastForward(context, (int *)argument); + break; + } case PLAYBACK_GET_FRAME_COUNT: { ret = PlaybackGetFrameCount(context, (uint64_t *)argument);