From 7b3590ba7af12fb543f9e3c23af409892de6d0e6 Mon Sep 17 00:00:00 2001 From: TangoCash Date: Wed, 15 Nov 2017 23:25:55 +0100 Subject: [PATCH 1/6] cleanup Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/afa6b14f4638d60fffa10975f50d5035c86a4185 Author: TangoCash Date: 2017-11-15 (Wed, 15 Nov 2017) ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- libarmbox/audio.cpp | 65 ---------------------------------- libarmbox/audio_lib.h | 11 ------ libarmbox/audio_mixer.cpp | 68 ----------------------------------- libarmbox/audio_mixer.h | 36 ------------------- libarmbox/dmx.cpp | 39 ++------------------- libarmbox/pwrmngr.cpp | 74 ++------------------------------------- libarmbox/video.cpp | 5 --- 7 files changed, 4 insertions(+), 294 deletions(-) delete mode 100644 libarmbox/audio_mixer.cpp delete mode 100644 libarmbox/audio_mixer.h diff --git a/libarmbox/audio.cpp b/libarmbox/audio.cpp index 7cbe499..8064633 100644 --- a/libarmbox/audio.cpp +++ b/libarmbox/audio.cpp @@ -27,26 +27,17 @@ cAudio::cAudio(void *, void *, void *) clipfd = -1; mixer_fd = -1; -/* - mixerAnalog = mixerHDMI = mixerSPDIF = NULL; - volumeAnalog = volumeHDMI = volumeSPDIF = 0; - mixersMuted = false -*/ - openDevice(); Muted = false; } cAudio::~cAudio(void) { - //closeMixers(); closeDevice(); } void cAudio::openDevice(void) { - //openMixers(); - if (fd < 0) { if ((fd = open(AUDIO_DEVICE, O_RDWR)) < 0) @@ -60,8 +51,6 @@ void cAudio::openDevice(void) void cAudio::closeDevice(void) { - //closeMixers(); - if (fd > -1) { close(fd); fd = -1; @@ -424,57 +413,3 @@ void cAudio::setBypassMode(bool disable) if (ioctl(fd, AUDIO_SET_BYPASS_MODE, mode) < 0) lt_info("%s AUDIO_SET_BYPASS_MODE %d: %m\n", __func__, mode); } - -#if 0 -void cAudio::openMixers(void) -{ - if (!mixerAnalog) - mixerAnalog = new mixerVolume("Analog", "1"); - if (!mixerHDMI) - mixerHDMI = new mixerVolume("HDMI", "1"); - if (!mixerSPDIF) - mixerSPDIF = new mixerVolume("SPDIF", "1"); -} - -void cAudio::closeMixers(void) -{ - delete mixerAnalog; - delete mixerHDMI; - delete mixerSPDIF; - mixerAnalog = mixerHDMI = mixerSPDIF = NULL; -} - -void cAudio::setMixerVolume(const char *name, long value, bool remember) -{ - if (!strcmp(name, "Analog")) { - mixerAnalog->setVolume(value); - if (remember) - volumeAnalog = value; - } - if (!strcmp(name, "HDMI")) { - mixerHDMI->setVolume(value); - if (remember) - volumeHDMI = value; - } - if (!strcmp(name, "SPDIF")) { - mixerSPDIF->setVolume(value); - if (remember) - volumeSPDIF = value; - } -} - -void cAudio::muteMixers(bool m) -{ - if (m && !mixersMuted) { - mixersMuted = true; - setMixerVolume("Analog", 0, false); - setMixerVolume("HDMI", 0, false); - setMixerVolume("SPDIF", 0, false); - } else if (!m && mixersMuted) { - mixersMuted = false; - setMixerVolume("Analog", volumeAnalog, false); - setMixerVolume("HDMI", volumeHDMI, false); - setMixerVolume("SPDIF", volumeSPDIF, false); - } -} -#endif diff --git a/libarmbox/audio_lib.h b/libarmbox/audio_lib.h index 5fb3e9c..5aad2f5 100644 --- a/libarmbox/audio_lib.h +++ b/libarmbox/audio_lib.h @@ -57,10 +57,6 @@ class cAudio int do_mute(bool enable, bool remember); void setBypassMode(bool disable); - mixerVolume *mixerAnalog, *mixerHDMI, *mixerSPDIF; - int volumeAnalog, volumeHDMI, volumeSPDIF; - bool mixersMuted; - public: /* construct & destruct */ cAudio(void *, void *, void *); @@ -99,13 +95,6 @@ class cAudio void SetSpdifDD(bool enable); void ScheduleMute(bool On); void EnableAnalogOut(bool enable); - -#if 0 - void openMixers(void); - void closeMixers(void); - void setMixerVolume(const char *name, long value, bool remember = true); - void muteMixers(bool m = true); -#endif }; #endif diff --git a/libarmbox/audio_mixer.cpp b/libarmbox/audio_mixer.cpp deleted file mode 100644 index f361209..0000000 --- a/libarmbox/audio_mixer.cpp +++ /dev/null @@ -1,68 +0,0 @@ -/* - * audio_mixer.cpp - * - * (C) 2012 martii - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include - -mixerVolume::mixerVolume(const char *name, const char *card, long volume) { - snd_mixer_selem_id_t *sid = NULL; - elem = NULL; - handle = NULL; - min = 0; - max = 100; - char cardId[10]; - - if (!name || !card) - return; - - int cx = snd_card_get_index(card); - if (cx < 0 || cx > 31) - return; - snprintf(cardId, sizeof(cardId), "hw:%i", cx); - - if (0 > snd_mixer_open(&handle, 0)) - return; - if (0 > snd_mixer_attach(handle, cardId)) - return; - if (0 > snd_mixer_selem_register(handle, NULL, NULL)) - return; - if (0 > snd_mixer_load(handle)) - return; - snd_mixer_selem_id_alloca(&sid); - if (!sid) - return; - snd_mixer_selem_id_set_index(sid, 0); - snd_mixer_selem_id_set_name(sid, name); - elem = snd_mixer_find_selem(handle, sid); - if (elem) { - snd_mixer_selem_get_playback_volume_range(elem, &min, &max); - setVolume(volume); - } -} -mixerVolume::~mixerVolume() -{ - if (handle) - snd_mixer_close(handle); -} - -bool mixerVolume::setVolume(long volume) { - return elem - && (volume > -1) - && (volume < 101) - && !snd_mixer_selem_set_playback_volume_all(elem, min + volume * (max - min)/100); -} diff --git a/libarmbox/audio_mixer.h b/libarmbox/audio_mixer.h deleted file mode 100644 index 2a6f6fc..0000000 --- a/libarmbox/audio_mixer.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * audio_mixer.h - * - * (C) 2012 martii - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#ifndef __AUDIO_MIXER_H__ -#define __AUDIO_MIXER_H__ -#include - -class mixerVolume -{ - private: - long min, max; - snd_mixer_t *handle; - snd_mixer_elem_t* elem; - public: - mixerVolume(const char *selem_name, const char *Card, long volume = -1); - ~mixerVolume(void); - bool setVolume(long volume); -}; -#endif - diff --git a/libarmbox/dmx.cpp b/libarmbox/dmx.cpp index 687f3b8..dbd5ef4 100644 --- a/libarmbox/dmx.cpp +++ b/libarmbox/dmx.cpp @@ -1,6 +1,6 @@ /* - * cDemux implementation for SH4 receivers (tested on fulan spark and - * fulan spark7162 hardware) + * cDemux implementation for arm receivers (tested on mutant hd51 + * hardware) * * derived from libtriple/dmx_td.cpp * @@ -20,41 +20,6 @@ * along with this program. If not, see . */ -/* - * Theory of operation (or "why is this dmx_source thing so strange and - * what is the _open() good for?") - * - * the sh4 pti driver, driving the /dev/dvb/adapter0/dmxN devices, can - * apparently only map one input to on demux device at a time, so e.g. - * DMX_SOURCE_FRONT1 -> demux0 - * DMX_SOURCE_FRONT2 -> demux0 - * DMX_SOURCE_FRONT1 -> demux1 - * does not work. The driver makes sure that a one-to-one mapping of - * DMX_SOURCE_FRONTn to demuxM is maintained, and it does by e.g changing - * the default of - * FRONT0 -> demux0 - * FRONT1 -> demux1 - * FRONT2 -> demux2 - * to - * FRONT1 -> demux0 - * FRONT0 -> demux1 - * FRONT2 -> demux2 - * if you do a DMX_SET_SOURCE(FRONT1) ioctl on demux0. - * This means, it also changes demux1's source on the SET_SOURCE ioctl on - * demux0, potentially disturbing any operation on demux1 (e.g. recording). - * - * In order to avoid this, I do not change the source->demuxdev mapping - * but instead just always use the demux device that is attached to the - * correct source. - * - * The tricky part is, that the source might actually be changed after - * Open() has been called, so Open() gets a dummy placeholder that just - * sets some variables while the real device open is put into _open(). - * _open() gets called later, whenever the device is actually used or - * configured and -- if the source has changed -- closes the old and - * opens the correct new device node. - */ - #include #include #include diff --git a/libarmbox/pwrmngr.cpp b/libarmbox/pwrmngr.cpp index b5ab30a..f4eff66 100644 --- a/libarmbox/pwrmngr.cpp +++ b/libarmbox/pwrmngr.cpp @@ -14,23 +14,7 @@ void cCpuFreqManager::Down(void) { lt_debug("%s\n", __FUNCTION__); } void cCpuFreqManager::Reset(void) { lt_debug("%s\n", __FUNCTION__); } /* those function dummies return true or "harmless" values */ bool cCpuFreqManager::SetDelta(unsigned long) { lt_debug("%s\n", __FUNCTION__); return true; } -#if HAVE_SPARK_HARDWARE || HAVE_DUCKBOX_HARDWARE -unsigned long cCpuFreqManager::GetCpuFreq(void) { - int freq = 0; - if (FILE *pll0 = fopen("/proc/cpu_frequ/pll0_ndiv_mdiv", "r")) { - char buffer[120]; - while(fgets(buffer, sizeof(buffer), pll0)) { - if (1 == sscanf(buffer, "SH4 = %d MHZ", &freq)) - break; - } - fclose(pll0); - return 1000 * 1000 * (unsigned long) freq; - } - return 0; -} -#else unsigned long cCpuFreqManager::GetCpuFreq(void) { lt_debug("%s\n", __FUNCTION__); return 0; } -#endif unsigned long cCpuFreqManager::GetDelta(void) { lt_debug("%s\n", __FUNCTION__); return 0; } // cCpuFreqManager::cCpuFreqManager(void) { lt_debug("%s\n", __FUNCTION__); } @@ -40,62 +24,8 @@ bool cPowerManager::SetState(PWR_STATE) { lt_debug("%s\n", __FUNCTION__); return bool cPowerManager::Open(void) { lt_debug("%s\n", __FUNCTION__); return true; } void cPowerManager::Close(void) { lt_debug("%s\n", __FUNCTION__); } // -bool cPowerManager::SetStandby(bool Active, bool Passive) -{ - lt_debug("%s(%d, %d)\n", __FUNCTION__, Active, Passive); - return true; -} - -bool cCpuFreqManager::SetCpuFreq(unsigned long f) -{ -#if HAVE_SPARK_HARDWARE || HAVE_DUCKBOX_HARDWARE - if (f) { - FILE *pll0 = fopen ("/proc/cpu_frequ/pll0_ndiv_mdiv", "w"); - if (pll0) { - f /= 1000000; - fprintf(pll0, "%lu\n", (f/10 << 8) | 3); - fclose (pll0); - return false; - } - } -#else - /* actually SetCpuFreq is used to determine if the system is in standby - this is an "elegant" hack, because: - * during a recording, cpu freq is kept "high", even if the box is sent to standby - * the "SetStandby" call is made even if a recording is running - On the TD, setting standby disables the frontend, so we must not do it - if a recording is running. - For now, the values in neutrino are hardcoded: - * f == 0 => max => not standby - * f == 50000000 => min => standby - */ - lt_debug("%s(%lu) => set standby = %s\n", __FUNCTION__, f, f?"true":"false"); -#if 0 - int fd = open("/dev/stb/tdsystem", O_RDONLY); - if (fd < 0) - { - perror("open tdsystem"); - return false; - } - if (f) - { - ioctl(fd, IOC_AVS_SET_VOLUME, 31); /* mute AVS to avoid ugly noise */ - ioctl(fd, IOC_AVS_STANDBY_ENTER); - } - else - { - ioctl(fd, IOC_AVS_SET_VOLUME, 31); /* mute AVS to avoid ugly noise */ - ioctl(fd, IOC_AVS_STANDBY_LEAVE); - /* unmute will be done by cAudio::do_mute(). Ugly, but prevents pops */ - // ioctl(fd, IOC_AVS_SET_VOLUME, 0); /* max gain */ - } - - close(fd); -#endif -#endif - return true; -} - +bool cPowerManager::SetStandby(bool Active, bool Passive) { lt_debug("%s(%d, %d)\n", __FUNCTION__, Active, Passive); return true; } +bool cCpuFreqManager::SetCpuFreq(unsigned long f) { lt_debug("%s(%lu) => set standby = %s\n", __FUNCTION__, f, f?"true":"false"); return true; } // cPowerManager::cPowerManager(void) { lt_debug("%s\n", __FUNCTION__); } cPowerManager::~cPowerManager() { lt_debug("%s\n", __FUNCTION__); } diff --git a/libarmbox/video.cpp b/libarmbox/video.cpp index 8bf87b1..8cbc631 100644 --- a/libarmbox/video.cpp +++ b/libarmbox/video.cpp @@ -83,11 +83,6 @@ static const char *VMPEG_yres[] = { "/proc/stb/vmpeg/1/yres" }; -static const char *VMPEG_dst_all[] = { - "/proc/stb/vmpeg/0/dst_all", - "/proc/stb/vmpeg/1/dst_all" -}; - static const char *VMPEG_dst_height[] = { "/proc/stb/vmpeg/0/dst_height", "/proc/stb/vmpeg/1/dst_height" From c44a0f8ae1866cf71e10369fb82f41ce91d550b6 Mon Sep 17 00:00:00 2001 From: TangoCash Date: Wed, 15 Nov 2017 23:29:19 +0100 Subject: [PATCH 2/6] cleanup Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/d016c7315edef4d7872f9bef46f1dd43e8487c8c Author: TangoCash Date: 2017-11-15 (Wed, 15 Nov 2017) ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- include/audio_hal.h | 1 - 1 file changed, 1 deletion(-) diff --git a/include/audio_hal.h b/include/audio_hal.h index 6f50cd5..f45ea2d 100644 --- a/include/audio_hal.h +++ b/include/audio_hal.h @@ -9,7 +9,6 @@ #include "../libspark/audio_mixer.h" #elif HAVE_ARM_HARDWARE #include "../libarmbox/audio_lib.h" -#include "../libarmbox/audio_mixer.h" #elif HAVE_AZBOX_HARDWARE #include "../azbox/audio_lib.h" #elif HAVE_GENERIC_HARDWARE From 0ae07d44a2e2290d4566ef949de5c45c31f61259 Mon Sep 17 00:00:00 2001 From: Jacek Jendrzej Date: Thu, 16 Nov 2017 18:51:01 +0100 Subject: [PATCH 3/6] convert jpg to m2v with libavcodec, need --enable-demuxer=image2 Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/e86301004abb31d13bb5ea55e3f2caf02c3e2bdd Author: Jacek Jendrzej Date: 2017-11-16 (Thu, 16 Nov 2017) ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- libarmbox/video.cpp | 131 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 127 insertions(+), 4 deletions(-) diff --git a/libarmbox/video.cpp b/libarmbox/video.cpp index 8cbc631..1d27454 100644 --- a/libarmbox/video.cpp +++ b/libarmbox/video.cpp @@ -40,6 +40,12 @@ #include +extern "C" +{ +#include +#include +} + #define lt_debug(args...) _lt_debug(TRIPLE_DEBUG_VIDEO, this, args) #define lt_info(args...) _lt_info(TRIPLE_DEBUG_VIDEO, this, args) #define lt_debug_c(args...) _lt_debug(TRIPLE_DEBUG_VIDEO, NULL, args) @@ -141,6 +147,126 @@ static const char *vid_modes[] = { #define VIDEO_STREAMTYPE_H265_HEVC 7 #define VIDEO_STREAMTYPE_AVS 16 +void init_parameters(AVFrame* in_frame, AVCodecContext *codec_context) +{ + /* put sample parameters */ + codec_context->bit_rate = 400000; + /* resolution must be a multiple of two */ + codec_context->width = (in_frame->width/2)*2; + codec_context->height = (in_frame->height/2)*2; + /* frames per second */ + codec_context->time_base = (AVRational ) { 1, 60 }; + codec_context->gop_size = 10; /* emit one intra frame every ten frames */ + codec_context->max_b_frames = 1; + codec_context->pix_fmt = AV_PIX_FMT_YUV420P; +} + +void write_frame(AVFrame* in_frame, FILE* fp) +{ + if(in_frame == NULL || fp == NULL) + return; + AVCodec *codec = avcodec_find_encoder(AV_CODEC_ID_MPEG2VIDEO); + if (codec) + { + AVCodecContext *codec_context = avcodec_alloc_context3(codec); + if (codec_context) + { + init_parameters(in_frame, codec_context); + if (avcodec_open2(codec_context, codec, 0) != -1){ + AVPacket pkt; + av_init_packet(&pkt); + /* encode the image */ + int got_output = 0; + int ret = avcodec_encode_video2(codec_context, &pkt, in_frame, &got_output); + if (ret != -1){ + if (got_output){ + fwrite(pkt.data, 1, pkt.size, fp); + av_packet_unref(&pkt); + } + int i =1; + for (got_output = 1; got_output; i++){ + /* get the delayed frames */ + in_frame->pts = i; + ret = avcodec_encode_video2(codec_context, &pkt, 0, &got_output); + if (ret != -1 && got_output){ + fwrite(pkt.data, 1, pkt.size, fp); + av_packet_unref(&pkt); + } + } + avcodec_close(codec_context); + av_free(codec_context); + } + } + } + } +} + +int decode_frame(AVCodecContext *codecContext,AVPacket &packet, FILE* fp) +{ + int decode_ok = 0; + AVFrame *frame = av_frame_alloc(); + if(frame){ + if ((avcodec_decode_video2(codecContext, frame, &decode_ok, &packet)) < 0 || !decode_ok){ + av_frame_free(&frame); + return -1; + } + write_frame(frame, fp); + av_frame_free(&frame); + } + return 0; + +} + +AVCodecContext* open_codec(AVMediaType mediaType, AVFormatContext* formatContext) +{ + int stream_index = av_find_best_stream(formatContext, mediaType, -1, -1, NULL, 0); + if (stream_index < 0){ + return NULL; + } + AVCodecContext * codecContext = formatContext->streams[stream_index]->codec; + AVCodec *codec = avcodec_find_decoder(codecContext->codec_id); + if (!codec){ + return NULL; + } + if ((avcodec_open2(codecContext, codec, NULL)) != 0){ + return NULL; + } + + return codecContext; +} + +int image_to_mpeg2(const char *image_name, const char *encode_name) +{ + int ret = 0; + av_register_all(); + avcodec_register_all(); + + AVFormatContext *formatContext = avformat_alloc_context(); + if ((ret = avformat_open_input(&formatContext, image_name, NULL, NULL)) == 0){ + AVCodecContext *codecContext = open_codec(AVMEDIA_TYPE_VIDEO, formatContext); + if(codecContext){ + AVPacket packet; + av_init_packet(&packet); + if ((ret = av_read_frame(formatContext, &packet)) !=-1){ + FILE* fp = fopen(encode_name, "wb"); + if(fp){ + if(decode_frame(codecContext, packet, fp) != 1){ + /* add sequence end code to have a real mpeg file */ + uint8_t endcode[] = { 0, 0, 1, 0xb7 }; + fwrite(endcode, 1, sizeof(endcode), fp); + fclose(fp); + } + } + avcodec_close(codecContext); + av_free_packet(&packet); + } + avformat_close_input(&formatContext); + } + } + av_free(formatContext); + return 0; +} + cVideo::cVideo(int, void *, void *, unsigned int unit) { lt_debug("%s unit %u\n", __func__, unit); @@ -431,7 +557,6 @@ void cVideo::ShowPicture(const char * fname, const char *_destname) static const unsigned char pes_header[] = {0x0, 0x0, 0x1, 0xe0, 0x00, 0x00, 0x80, 0x80, 0x5, 0x21, 0x0, 0x1, 0x0, 0x1}; static const unsigned char seq_end[] = { 0x00, 0x00, 0x01, 0xB7 }; char destname[512]; - char cmd[512]; char *p; int mfd; struct stat st, st2; @@ -472,9 +597,7 @@ void cVideo::ShowPicture(const char * fname, const char *_destname) u.actime = time(NULL); u.modtime = st2.st_mtime; /* it does not exist or has a different date, so call ffmpeg... */ - sprintf(cmd, "ffmpeg -y -f mjpeg -i '%s' -s 1280x720 -aspect 16:9 '%s' >/dev/null", - fname, destname); - system(cmd); /* TODO: use libavcodec to directly convert it */ + image_to_mpeg2(fname, destname); utime(destname, &u); } } From 2d721dee10c84f34b7ce39b60dd370efa43047b7 Mon Sep 17 00:00:00 2001 From: Jacek Jendrzej Date: Thu, 16 Nov 2017 18:58:13 +0100 Subject: [PATCH 4/6] fix close fp Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/193fcf4ea1e3f42bd8d06baa3711a53f15dc9a70 Author: Jacek Jendrzej Date: 2017-11-16 (Thu, 16 Nov 2017) ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- libarmbox/video.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libarmbox/video.cpp b/libarmbox/video.cpp index 1d27454..3eaac62 100644 --- a/libarmbox/video.cpp +++ b/libarmbox/video.cpp @@ -254,8 +254,8 @@ int image_to_mpeg2(const char *image_name, const char *encode_name) /* add sequence end code to have a real mpeg file */ uint8_t endcode[] = { 0, 0, 1, 0xb7 }; fwrite(endcode, 1, sizeof(endcode), fp); - fclose(fp); } + fclose(fp); } avcodec_close(codecContext); av_free_packet(&packet); From 743fd04e0e6f4add2da026361ca7caa14ba77637 Mon Sep 17 00:00:00 2001 From: Jacek Jendrzej Date: Thu, 16 Nov 2017 19:09:16 +0100 Subject: [PATCH 5/6] check alloc AVFormatContext Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/702b8d608529d09f3f6383475edd7bdbb618f30b Author: Jacek Jendrzej Date: 2017-11-16 (Thu, 16 Nov 2017) ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- libarmbox/video.cpp | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/libarmbox/video.cpp b/libarmbox/video.cpp index 3eaac62..19b41b3 100644 --- a/libarmbox/video.cpp +++ b/libarmbox/video.cpp @@ -225,14 +225,10 @@ AVCodecContext* open_codec(AVMediaType mediaType, AVFormatContext* formatContext } AVCodecContext * codecContext = formatContext->streams[stream_index]->codec; AVCodec *codec = avcodec_find_decoder(codecContext->codec_id); - if (!codec){ + if (codec && (avcodec_open2(codecContext, codec, NULL)) != 0){ return NULL; } - if ((avcodec_open2(codecContext, codec, NULL)) != 0){ - return NULL; - } - - return codecContext; + return codecContext; } int image_to_mpeg2(const char *image_name, const char *encode_name) @@ -242,7 +238,7 @@ int image_to_mpeg2(const char *image_name, const char *encode_name) avcodec_register_all(); AVFormatContext *formatContext = avformat_alloc_context(); - if ((ret = avformat_open_input(&formatContext, image_name, NULL, NULL)) == 0){ + if (formatContext && (ret = avformat_open_input(&formatContext, path, NULL, NULL)) == 0){ AVCodecContext *codecContext = open_codec(AVMEDIA_TYPE_VIDEO, formatContext); if(codecContext){ AVPacket packet; From 354244adcf19a8c4067dbf9ee9b0cceb797c20e4 Mon Sep 17 00:00:00 2001 From: Jacek Jendrzej Date: Thu, 16 Nov 2017 19:10:40 +0100 Subject: [PATCH 6/6] fix last commit Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/e0effa50e20888acbb9e13fcb5c3079f36ec4ed2 Author: Jacek Jendrzej Date: 2017-11-16 (Thu, 16 Nov 2017) ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- libarmbox/video.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libarmbox/video.cpp b/libarmbox/video.cpp index 19b41b3..1192f08 100644 --- a/libarmbox/video.cpp +++ b/libarmbox/video.cpp @@ -238,7 +238,7 @@ int image_to_mpeg2(const char *image_name, const char *encode_name) avcodec_register_all(); AVFormatContext *formatContext = avformat_alloc_context(); - if (formatContext && (ret = avformat_open_input(&formatContext, path, NULL, NULL)) == 0){ + if (formatContext && (ret = avformat_open_input(&formatContext, image_name, NULL, NULL)) == 0){ AVCodecContext *codecContext = open_codec(AVMEDIA_TYPE_VIDEO, formatContext); if(codecContext){ AVPacket packet;