diff --git a/scripts/a.sh b/scripts/a.sh index 541d55c..1aa2376 100755 --- a/scripts/a.sh +++ b/scripts/a.sh @@ -1,6 +1,8 @@ #! /bin/bash # set -x #Uncomment for testing +# Version 201702190 + ############# SET GLOBAL VARIABLES #################### PATHRPI="/home/pi/rpidatv/bin" @@ -40,28 +42,27 @@ sudo killall tcanim >/dev/null 2>/dev/null # Kill netcat that night have been started for Express Srver sudo killall netcat >/dev/null 2>/dev/null sudo killall -9 netcat >/dev/null 2>/dev/null -#---- Launch FBCP ---- -#sudo killall fbcp -#fbcp & -# --------------- -#sudo killall uv4l + +############ FUNCTION TO DETECT USB AUDIO DONGLE ############################# detect_audio() { -devicea="/proc/asound/card1" -if [ -e "$devicea" ]; then - AUDIO_CARD=1 -else - AUDIO_CARD=0 -fi + devicea="/proc/asound/card1" + if [ -e "$devicea" ]; then + AUDIO_CARD=1 + else + AUDIO_CARD=0 + fi -if [ "$AUDIO_CARD" == 1 ]; then - echo Audio Card present -else - echo Audio Card Absent -fi + if [ "$AUDIO_CARD" == 1 ]; then + echo Audio Card present + else + echo Audio Card Absent + fi } +############ READ FROM rpidatvconfig.txt and Set PARAMETERS ####################### + MODE_INPUT=$(get_config_var modeinput $CONFIGFILE) TSVIDEOFILE=$(get_config_var tsvideofile $CONFIGFILE) PATERNFILE=$(get_config_var paternfile $CONFIGFILE) @@ -72,6 +73,11 @@ CHANNEL=$CALL"-rpidatv" FREQ_OUTPUT=$(get_config_var freqoutput $CONFIGFILE) BATC_OUTPUT=$(get_config_var batcoutput $CONFIGFILE) OUTPUT_BATC="-f flv rtmp://fms.batc.tv/live/"$BATC_OUTPUT"/"$BATC_OUTPUT + +STREAM_URL=$(get_config_var streamurl $CONFIGFILE) +STREAM_KEY=$(get_config_var streamkey $CONFIGFILE) +OUTPUT_STREAM="-f flv "$STREAM_URL"/"$STREAM_KEY + MODE_OUTPUT=$(get_config_var modeoutput $CONFIGFILE) SYMBOLRATEK=$(get_config_var symbolrate $CONFIGFILE) GAIN=$(get_config_var rfpower $CONFIGFILE) @@ -87,52 +93,71 @@ ANALOGCAMINPUT=$(get_config_var analogcaminput $CONFIGFILE) ANALOGCAMSTANDARD=$(get_config_var analogcamstandard $CONFIGFILE) VNCADDR=$(get_config_var vncaddr $CONFIGFILE) -#v4l2-ctl --overlay=0 - - - -detect_audio +OUTPUT_IP="" let SYMBOLRATE=SYMBOLRATEK*1000 FEC=$(get_config_var fec $CONFIGFILE) let FECNUM=FEC let FECDEN=FEC+1 -OUTPUT_IP="" +#v4l2-ctl --overlay=0 + +detect_audio + +######################### Pre-processing for each Output Mode ############### case "$MODE_OUTPUT" in - IP) - FREQUENCY_OUT=0 - OUTPUT_IP="-n"$UDPOUTADDR":10000" - #GAIN=0 - ;; - IQ) - FREQUENCY_OUT=0 - OUTPUT=videots - MODE=IQ - $PATHSCRIPT"/ctlfilter.sh" - $PATHSCRIPT"/ctlvco.sh" - #GAIN=0 - ;; - QPSKRF) - FREQUENCY_OUT=$FREQ_OUTPUT - OUTPUT=videots - MODE=RF - ;; - BATC) - #MODE_INPUT=BATC - OUTPUT=$OUTPUT_BATC - ;; - DIGITHIN) - FREQUENCY_OUT=0 - OUTPUT=videots - DIGITHIN_MODE=1 - MODE=DIGITHIN - $PATHSCRIPT"/ctlfilter.sh" - $PATHSCRIPT"/ctlvco.sh" - #GAIN=0 - ;; - DTX1) + + IQ) + FREQUENCY_OUT=0 + OUTPUT=videots + MODE=IQ + $PATHSCRIPT"/ctlfilter.sh" + $PATHSCRIPT"/ctlvco.sh" + #GAIN=0 + ;; + + QPSKRF) + FREQUENCY_OUT=$FREQ_OUTPUT + OUTPUT=videots + MODE=RF + ;; + + BATC) + # Set Output string "-f flv rtmp://fms.batc.tv/live/"$BATC_OUTPUT"/"$BATC_OUTPUT + OUTPUT=$OUTPUT_BATC + # If CAMH264 is selected, temporarily select CAMMPEG-2 + if [ "$MODE_INPUT" == "CAMH264" ]; then + MODE_INPUT="CAMMPEG-2" + fi + # Temporarily set optimum symbol rate for BATC Streamer + SYMBOLRATEK="400" + let SYMBOLRATE=SYMBOLRATEK*1000 + ;; + + STREAMER) + # Set Output string "-f flv "$STREAM_URL"/"$STREAM_KEY + OUTPUT=$OUTPUT_STREAM + # If CAMH264 is selected, temporarily select CAMMPEG-2 + if [ "$MODE_INPUT" == "CAMH264" ]; then + MODE_INPUT="CAMMPEG-2" + # Temporarily set optimum symbol rate for another Streamer + SYMBOLRATEK="400" + let SYMBOLRATE=SYMBOLRATEK*1000 + fi + ;; + + DIGITHIN) + FREQUENCY_OUT=0 + OUTPUT=videots + DIGITHIN_MODE=1 + MODE=DIGITHIN + $PATHSCRIPT"/ctlfilter.sh" + $PATHSCRIPT"/ctlvco.sh" + #GAIN=0 + ;; + + DTX1) MODE=PARALLEL FREQUENCY_OUT=2 OUTPUT=videots @@ -187,6 +212,13 @@ case "$MODE_OUTPUT" in # Make sure that carrier mode is off echo "set car off" >> /tmp/expctrl ;; + + IP) + FREQUENCY_OUT=0 + OUTPUT_IP="-n"$UDPOUTADDR":10000" + #GAIN=0 + ;; + esac #CALL="F5OEO" @@ -277,8 +309,11 @@ case "$MODE_INPUT" in case "$MODE_OUTPUT" in "BATC") - # sudo nice -n -30 $PATHRPI"/ffmpeg" -i videots -y $OUTPUT_BATC & - echo > null + : # Do nothing + # sudo nice -n -30 $PATHRPI"/ffmpeg" -i videots -y $OUTPUT_BATC & + ;; + "STREAMER") + : # Do nothing ;; "IP") OUTPUT_FILE="" @@ -317,15 +352,28 @@ case "$MODE_INPUT" in v4l2-ctl --set-fmt-overlay=left=0,top=0,width=$OVERLAY_VIDEO_WIDTH,height=$OVERLAY_VIDEO_HEIGHT v4l2-ctl -p $VIDEO_FPS let DELAY=(BITRATE_VIDEO*8)/10 + # If sound arrives first, decrease the numeric number to delay it + # "-00:00:0.7" works well at SR1000 on IQ mode + # "-00:00:1.0" works well at SR2000 on IQ mode + ITS_OFFSET="-00:00:1.0" case "$MODE_OUTPUT" in "BATC") - # ffmpeg sends the stream directly to the BATC Server - echo > null + ITS_OFFSET="-00:00:5.0" + #sudo nice -n -30 $PATHRPI"/ffmpeg" -i videots -y $OUTPUT_STREAM & + sudo nice -n -30 $PATHRPI"/ffmpeg" -i videots -y -video_size 640x480\ + -b:v 500k -maxrate 700k -bufsize 2048k $OUTPUT_BATC & + OUTPUT="videots" + ;; + "STREAMER") + ITS_OFFSET="-00:00:5.0" + #sudo nice -n -30 $PATHRPI"/ffmpeg" -i videots -y $OUTPUT_STREAM & + sudo nice -n -30 $PATHRPI"/ffmpeg" -i videots -y -video_size 640x480\ + -b:v 500k -maxrate 700k -bufsize 2048k $OUTPUT_STREAM & + OUTPUT="videots" ;; "IP") - # ffmpeg sends the stream directly to the IP output - echo > null + : # Do nothing ;; "DATVEXPRESS") echo "set ptt tx" >> /tmp/expctrl @@ -337,12 +385,32 @@ case "$MODE_INPUT" in ;; esac +# AUDIO_CARD=0 + if [ "$AUDIO_CARD" == 0 ]; then # ******************************* MPEG-2 VIDEO WITH BEEP ************************************ - sudo $PATHRPI"/ffmpeg" -loglevel $MODE_DEBUG -itsoffset -00:00:0.2 -analyzeduration 0 -probesize 2048 -fpsprobesize 0 -re -ac 1 -f lavfi -thread_queue_size 512 -i "sine=frequency=500:beep_factor=4:sample_rate=48000:duration=3600" -f v4l2 -framerate $VIDEO_FPS -video_size "$VIDEO_WIDTH"x"$VIDEO_HEIGHT" -i /dev/video0 -fflags nobuffer -vcodec mpeg2video -s "$VIDEO_WIDTH"x"$VIDEO_HEIGHT" -aspect 4:3 -b:v $BITRATE_VIDEO -minrate:v $BITRATE_VIDEO -maxrate:v $BITRATE_VIDEO -f mpegts -blocksize 1880 -strict experimental -acodec mp2 -ab 64K -ar 48k -ac 1 -mpegts_original_network_id 1 -mpegts_transport_stream_id 1 -mpegts_service_id $SERVICEID -mpegts_pmt_start_pid $PIDPMT -mpegts_start_pid $PIDVIDEO -metadata service_provider=$CALL -metadata service_name=$CHANNEL -muxrate $BITRATE_TS -y $OUTPUT & + sudo $PATHRPI"/ffmpeg" -loglevel $MODE_DEBUG -itsoffset -00:00:0.2\ + -analyzeduration 0 -probesize 2048 -fpsprobesize 0 -re -ac 1 -f lavfi -thread_queue_size 512\ + -i "sine=frequency=500:beep_factor=4:sample_rate=44100:duration=3600"\ + -f v4l2 -framerate $VIDEO_FPS -video_size "$VIDEO_WIDTH"x"$VIDEO_HEIGHT"\ + -i /dev/video0 -fflags nobuffer -vcodec mpeg2video -s "$VIDEO_WIDTH"x"$VIDEO_HEIGHT"\ + -aspect 4:3 -b:v $BITRATE_VIDEO -minrate:v $BITRATE_VIDEO -maxrate:v $BITRATE_VIDEO\ + -f mpegts -blocksize 1880 -strict experimental -acodec mp2 -ab 64K -ar 44100 -ac 1\ + -mpegts_original_network_id 1 -mpegts_transport_stream_id 1 -mpegts_service_id $SERVICEID\ + -mpegts_pmt_start_pid $PIDPMT -mpegts_start_pid $PIDVIDEO -metadata service_provider=$CALL\ + -metadata service_name=$CHANNEL -muxrate $BITRATE_TS -y $OUTPUT & else # ******************************* MPEG-2 VIDEO WITH AUDIO ************************************ - sudo nice -n -30 arecord -f S16_LE -r 48000 -c 1 -M -D hw:1 |sudo nice -n -30 $PATHRPI"/ffmpeg" -loglevel $MODE_DEBUG -itsoffset -00:00:0.8 -analyzeduration 0 -probesize 2048 -fpsprobesize 0 -ac 1 -thread_queue_size 512 -i - -f v4l2 -framerate $VIDEO_FPS -video_size "$VIDEO_WIDTH"x"$VIDEO_HEIGHT" -i /dev/video0 -fflags nobuffer -vcodec mpeg2video -s "$VIDEO_WIDTH"x"$VIDEO_HEIGHT" -aspect 4:3 -b:v $BITRATE_VIDEO -minrate:v $BITRATE_VIDEO -maxrate:v $BITRATE_VIDEO -f mpegts -blocksize 1880 -strict experimental -acodec mp2 -ab 64K -ar 48k -ac 1 -mpegts_original_network_id 1 -mpegts_transport_stream_id 1 -mpegts_service_id $SERVICEID -mpegts_pmt_start_pid $PIDPMT -mpegts_start_pid $PIDVIDEO -metadata service_provider=$CALL -metadata service_name=$CHANNEL -muxrate $BITRATE_TS -y $OUTPUT & + sudo nice -n -30 arecord -f S16_LE -r 44100 -c 1 -M -D hw:1\ + |sudo nice -n -30 $PATHRPI"/ffmpeg" -loglevel $MODE_DEBUG -itsoffset "$ITS_OFFSET"\ + -analyzeduration 0 -probesize 2048 -fpsprobesize 0 -ac 1 -thread_queue_size 512\ + -i - -f v4l2 -framerate $VIDEO_FPS -video_size "$VIDEO_WIDTH"x"$VIDEO_HEIGHT"\ + -i /dev/video0 -fflags nobuffer -vcodec mpeg2video -s "$VIDEO_WIDTH"x"$VIDEO_HEIGHT"\ + -aspect 4:3 -b:v $BITRATE_VIDEO -minrate:v $BITRATE_VIDEO -maxrate:v $BITRATE_VIDEO\ + -f mpegts -blocksize 1880 -strict experimental -acodec mp2 -ab 64K -ar 44100 -ac 1\ + -mpegts_original_network_id 1 -mpegts_transport_stream_id 1 -mpegts_service_id $SERVICEID\ + -mpegts_pmt_start_pid $PIDPMT -mpegts_start_pid $PIDVIDEO -metadata service_provider=$CALL\ + -metadata service_name=$CHANNEL -muxrate $BITRATE_TS -y $OUTPUT & fi ;; @@ -397,33 +465,36 @@ $PATHRPI"/avc2ts" -b $BITRATE_VIDEO -m $BITRATE_TS -x $VIDEO_WIDTH -y $VIDEO_HEI #============================================ ANALOG ============================================================= "ANALOGCAM") - if [ "$ANALOGCAMINPUT" != "-" ]; then - v4l2-ctl -d $ANALOGCAMNAME "--set-input="$ANALOGCAMINPUT - fi + if [ "$ANALOGCAMINPUT" != "-" ]; then + v4l2-ctl -d $ANALOGCAMNAME "--set-input="$ANALOGCAMINPUT + fi + if [ "$ANALOGCAMSTANDARD" != "-" ]; then + v4l2-ctl -d $ANALOGCAMNAME "--set-standard="$ANALOGCAMSTANDARD + fi - if [ "$ANALOGCAMSTANDARD" != "-" ]; then - v4l2-ctl -d $ANALOGCAMNAME "--set-standard="$ANALOGCAMSTANDARD - fi + sudo modprobe -r bcm2835_v4l2 - sudo modprobe -r bcm2835_v4l2 - case "$MODE_OUTPUT" in - "BATC") - sudo nice -n -30 $PATHRPI"/ffmpeg" -loglevel $MODE_DEBUG -i videots -y $OUTPUT_BATC & + case "$MODE_OUTPUT" in + "BATC") +# sudo nice -n -30 $PATHRPI"/ffmpeg" -loglevel $MODE_DEBUG -i videots -y $OUTPUT_BATC & + sudo nice -n 0 $PATHRPI"/ffmpeg" -i videots -y $OUTPUT_BATC & + OUTPUT_FILE="videots" + ;; + "IP") + OUTPUT_FILE="" + ;; + "DATVEXPRESS") + echo "set ptt tx" >> /tmp/expctrl + sudo nice -n -30 netcat -u -4 127.0.0.1 1314 < videots & + ;; + *) + sudo $PATHRPI"/rpidatv" -i videots -s $SYMBOLRATE_K -c $FECNUM"/"$FECDEN -f $FREQUENCY_OUT -p $GAIN -m $MODE -x $PIN_I -y $PIN_Q & + ;; + esac + + $PATHRPI"/avc2ts" -b $BITRATE_VIDEO -m $BITRATE_TS -x $VIDEO_WIDTH -y $VIDEO_HEIGHT\ + -f $VIDEO_FPS -i 100 $OUTPUT_FILE -t 2 -e $ANALOGCAMNAME -p $PIDPMT -s $CHANNEL $OUTPUT_IP & ;; - "IP") - OUTPUT_FILE="" - ;; - "DATVEXPRESS") - echo "set ptt tx" >> /tmp/expctrl - sudo nice -n -30 netcat -u -4 127.0.0.1 1314 < videots & - ;; - *) - sudo $PATHRPI"/rpidatv" -i videots -s $SYMBOLRATE_K -c $FECNUM"/"$FECDEN -f $FREQUENCY_OUT -p $GAIN -m $MODE -x $PIN_I -y $PIN_Q &;; - esac - -$PATHRPI"/avc2ts" -b $BITRATE_VIDEO -m $BITRATE_TS -x $VIDEO_WIDTH -y $VIDEO_HEIGHT -f $VIDEO_FPS -i 100 $OUTPUT_FILE -t 2 -e $ANALOGCAMNAME -p $PIDPMT -s $CHANNEL $OUTPUT_IP & - -;; #============================================ DESKTOP ============================================================= "DESKTOP") diff --git a/scripts/langgb.sh b/scripts/langgb.sh index ad81a47..2959da6 100755 --- a/scripts/langgb.sh +++ b/scripts/langgb.sh @@ -20,9 +20,9 @@ StrInputSetupVNC="Show PC Desktop via VNC" StrInputSetupVNCName="IP of PC using VNC (password datv)" StrInputSetupVNCTitle="VNC setup" StrInputSetupDESKTOP="Show Touchscreen or Raspberry Pi Display" -StrPIN_IContext="I GPIO {12,18,40} (12 is default:pin32)" +StrPIN_IContext="I GPIO {12,18,40} (12 is default for Portsdown: pin32)" StrPIN_ITitle="I output GPIO" -StrPIN_QContext="Q GPIO {13,19,41}(13 is defaut:pin33)" +StrPIN_QContext="Q GPIO {13,19,41} (13 is default for Portsdown: pin33)" StrPIN_QTitle="Q output GPIO" ######## CALL MENU ###################" @@ -36,11 +36,11 @@ StrLocatorTitle="Locator" StrOutputSetupTitle="Output type" StrOutputSetupContext="Press down/up arrows to move, space to select" StrOutputSetupIQ="IQ output for Portsdown filter modulator board" -StrOutputSetupRF="UGLY Test Mode. No modulator required." +StrOutputSetupRF="UGLY Test Mode. RF from pin 32. No modulator required." StrOutputSetupBATC="Stream to BATC.TV" StrOutputSetupDigithin="Use Digithin Modulator Card" StrOutputSetupDTX1="Use DTX1 TS Extender Card" -StrOutputSetupDATVExpress="DatvExpress" +StrOutputSetupDATVExpress="Use DATV Express connected by USB" StrOutputSetupIP="Transmit on IP network" StrOutputSetupIPTSOUTName="IP address: 230.0.0.1 for example" StrOutputSetupIPTSOUTTitle="Output network setup" diff --git a/scripts/latest_version.txt b/scripts/latest_version.txt index 999519c..896dcdd 100644 --- a/scripts/latest_version.txt +++ b/scripts/latest_version.txt @@ -1 +1 @@ -201702110 +201702190 diff --git a/scripts/menu.sh b/scripts/menu.sh index b7a3649..28c8840 100755 --- a/scripts/menu.sh +++ b/scripts/menu.sh @@ -1,5 +1,7 @@ #!/bin/bash +# Version 201702190 + ############ Set Environment Variables ############### PATHSCRIPT=/home/pi/rpidatv/scripts @@ -359,17 +361,17 @@ do_output_setup_mode() DIGITHIN) Radio5=ON ;; - DTX1) +# DTX1) +# Radio6=ON +# ;; + DATVEXPRESS) Radio6=ON ;; - DATVEXPRESS) + IP) Radio7=ON ;; - IP) - Radio8=ON - ;; *) - Radio9=ON + Radio8=ON ;; esac @@ -380,9 +382,8 @@ do_output_setup_mode() "BATC" "$StrOutputSetupBATC" $Radio3 \ "STREAMER" "Stream to other Streaming Facility" $Radio4 \ "DIGITHIN" "$StrOutputSetupDigithin" $Radio5 \ - "DTX1" "$StrOutputSetupDTX1" $Radio6 \ - "DATVEXPRESS" "$StrOutputSetupDATVExpress" $Radio7 \ - "IP" "$StrOutputSetupIP" $Radio8 3>&2 2>&1 1>&3) + "DATVEXPRESS" "$StrOutputSetupDATVExpress" $Radio6 \ + "IP" "$StrOutputSetupIP" $Radio7 3>&2 2>&1 1>&3) if [ $? -eq 0 ]; then case "$choutput" in @@ -414,9 +415,9 @@ do_output_setup_mode() fi ;; STREAMER) - whiptail --title "Not implemented yet" --msgbox "Not Implemented yet. Please press enter to continue" 8 78 STREAM_URL=$(get_config_var streamurl $CONFIGFILE) - STREAM=$(whiptail --inputbox "Enter the stream URL" 8 78 $STREAM_URL --title "Enter other Stream Details" 3>&1 1>&2 2>&3) + STREAM=$(whiptail --inputbox "Enter the stream URL: rtmp://server.tld/folder" 8 78\ + $STREAM_URL --title "Enter other Stream Details" 3>&1 1>&2 2>&3) if [ $? -eq 0 ]; then set_config_var streamurl "$STREAM" $CONFIGFILE fi @@ -440,8 +441,8 @@ do_output_setup_mode() FREQ_OUTPUT=$(get_config_var freqoutput $CONFIGFILE) sudo ./si570 -f $FREQ_OUTPUT -m off ;; - DTX1) ;; - + #DTX1) + #;; DATVEXPRESS) echo "Starting the DATV Express Server. Please wait." if pgrep -x "express_server" > /dev/null; then @@ -584,15 +585,15 @@ menuchoice=$(whiptail --title "$StrOutputTitle" --menu "$StrOutputContext" 16 78 do_transmit() { - # Call a.sh in a an additional process to start the transmitter + # Call a.sh in an additional process to start the transmitter $PATHSCRIPT"/a.sh" >/dev/null 2>/dev/null & - # do_status was called here - - # Wait here transmitting until user presses a key - - # Not sure about this - do_display_on + # Start the Viewfinder display if user sets it on + if [ "$V_FINDER" == "on" ]; then + do_display_on + else + do_display_off + fi # Wait here transmitting until user presses a key whiptail --title "$StrStatusTitle" --msgbox "$INFO" 8 78 @@ -899,6 +900,7 @@ do_EasyCap() do_audio_switch() { + whiptail --title "Not implemented yet" --msgbox "Not Implemented yet. Please press enter to continue" 8 78 AUDIO=$(get_config_var audio $CONFIGFILE) case "$AUDIO" in usb) @@ -919,8 +921,6 @@ do_audio_switch() if [ $? -eq 0 ]; then ## If the selection has changed set_config_var audio "$AUDIO" $CONFIGFILE fi - - whiptail --title "Not implemented yet" --msgbox "Not Implemented yet. Please press enter to continue" 8 78 } do_Update() @@ -1326,10 +1326,8 @@ do_numbers() do_vfinder() { - whiptail --title "Not implemented yet" --msgbox "Not Implemented yet. Please press enter to continue" 8 78 - - VFINDER=$(get_config_var vfinder $CONFIGFILE) - case "$VFINDER" in + V_FINDER=$(get_config_var vfinder $CONFIGFILE) + case "$V_FINDER" in on) Radio1=ON Radio2=OFF @@ -1339,17 +1337,15 @@ do_vfinder() Radio2=ON esac - VFINDER=$(whiptail --title "SET VIEWFINDER ON OR OFF" --radiolist \ + V_FINDER=$(whiptail --title "SET VIEWFINDER ON OR OFF" --radiolist \ "Select one" 20 78 8 \ "on" "Transmitted image displayed on Touchscreen" $Radio1 \ "off" "Buttons displayed on touchscreen during transmit" $Radio2 \ 3>&2 2>&1 1>&3) if [ $? -eq 0 ]; then ## If the selection has changed - set_config_var vfinder "$VFINDER" $CONFIGFILE + set_config_var vfinder "$V_FINDER" $CONFIGFILE fi - - whiptail --title "Not implemented yet" --msgbox "Not Implemented yet. Please press enter to continue" 8 78 } do_beta() @@ -1376,8 +1372,6 @@ do_beta() if [ $? -eq 0 ]; then ## If the selection has changed set_config_var beta "$BETA" $CONFIGFILE fi - - whiptail --title "Not implemented yet" --msgbox "Not Implemented yet. Please press enter to continue" 8 78 } do_system_setup() @@ -1541,6 +1535,8 @@ FREQ_OUTPUT=$(get_config_var freqoutput $CONFIGFILE) GAIN_OUTPUT=$(get_config_var rfpower $CONFIGFILE) let FECNUM=FEC let FECDEN=FEC+1 +V_FINDER=$(get_config_var vfinder $CONFIGFILE) + INFO=$CALL":"$MODE_INPUT"-->"$MODE_OUTPUT"("$SYMBOLRATEK"KSymbol FEC "$FECNUM"/"$FECDEN") on "$FREQ_OUTPUT"Mhz" do_transmit @@ -1610,6 +1606,7 @@ while [ "$status" -eq 0 ] let FECNUM=FEC let FECDEN=FEC+1 INFO=$CALL":"$MODE_INPUT"-->"$MODE_OUTPUT"("$SYMBOLRATEK"KSymbol FEC "$FECNUM"/"$FECDEN") on "$FREQ_OUTPUT"Mhz" + V_FINDER=$(get_config_var vfinder $CONFIGFILE) # Display main menu diff --git a/src/gui/rpidatvtouch.c b/src/gui/rpidatvtouch.c index 1ce50b6..a590691 100644 --- a/src/gui/rpidatvtouch.c +++ b/src/gui/rpidatvtouch.c @@ -76,7 +76,7 @@ char ModeOutput[255]; // Values to be stored in and read from rpidatvconfig.txt: -int TabSR[5]= {125,333,1000,2000,4000}; +int TabSR[5]={125,333,1000,2000,4000}; int TabFec[5]={1,2,3,5,7}; char TabModeInput[5][255]={"CAMMPEG-2","CAMH264","PATERNAUDIO","ANALOGCAM","CARRIER"}; char TabFreq[5][255]={"71","146.5","437","1249","1255"}; @@ -357,12 +357,12 @@ int getTouchScreenDetails(int *screenXmin,int *screenXmax,int *screenYmin,int *s if ((k < 3) || abs[k]){ printf(" %s %6d\n", absval[k], abs[k]); if (j == 0){ - if (absval[k] == "Min ") *screenXmin = abs[k]; - if (absval[k] == "Max ") *screenXmax = abs[k]; + if ((strcmp(absval[k],"Min ")==0)) *screenXmin = abs[k]; + if ((strcmp(absval[k],"Max ")==0)) *screenXmax = abs[k]; } if (j == 1){ - if (absval[k] == "Min ") *screenYmin = abs[k]; - if (absval[k] == "Max ") *screenYmax = abs[k]; + if ((strcmp(absval[k],"Min ")==0)) *screenYmin = abs[k]; + if ((strcmp(absval[k],"Max ")==0)) *screenYmax = abs[k]; } } } @@ -501,20 +501,25 @@ void SelectPTT(int NoButton,int Status) // TX/RX void TransmitStart() { - printf("Transmit Start\n"); - - #define PATH_SCRIPT_A "sudo /home/pi/rpidatv/scripts/a.sh >/dev/null 2>/dev/null" - if((strcmp(ModeInput,TabModeInput[0])==0)||(strcmp(ModeInput,TabModeInput[1])==0)) //CAM - { - printf("DISPLAY OFF \n"); - IsDisplayOn=0; - finish(); - - system("v4l2-ctl --overlay=1 >/dev/null 2>/dev/null"); - } - - system(PATH_SCRIPT_A); + printf("Transmit Start\n"); + char Param[255]; + char Value[255]; + #define PATH_SCRIPT_A "sudo /home/pi/rpidatv/scripts/a.sh >/dev/null 2>/dev/null" + // Check if camera selected + if((strcmp(ModeInput,TabModeInput[0])==0)||(strcmp(ModeInput,TabModeInput[1])==0)) + { + // Start the viewfinder if required + strcpy(Param,"vfinder"); + GetConfigParam(PATH_CONFIG,Param,Value); + if(strcmp(Value,"on")==0) + { + IsDisplayOn=0; + finish(); + system("v4l2-ctl --overlay=1 >/dev/null 2>/dev/null"); + } + } + system(PATH_SCRIPT_A); } void TransmitStop() @@ -539,6 +544,7 @@ void TransmitStop() system(expressrx); } + // Kill netcat as used by DATV Express system("sudo killall netcat >/dev/null 2>/dev/null"); // Kill the key processes as nicely as possible @@ -546,6 +552,8 @@ void TransmitStop() system("sudo killall ffmpeg >/dev/null 2>/dev/null"); system("sudo killall tcanim >/dev/null 2>/dev/null"); system("sudo killall avc2ts >/dev/null 2>/dev/null"); + + // Turn the Viewfinder off system("v4l2-ctl --overlay=0 >/dev/null 2>/dev/null"); // Then pause and make sure that avc2ts has really been stopped (needed at high SRs) @@ -583,11 +591,12 @@ void *DisplayFFT(void * arg) while(FinishedButton==0) { - int Nbread; // value set later but not used + //int Nbread; // value set later but not used //int log2_N=11; //FFT 1024 not used? //int ret; // not used? - Nbread=fread( fftin,sizeof(fftwf_complex),FFT_SIZE,pFileIQ); + //Nbread=fread( fftin,sizeof(fftwf_complex),FFT_SIZE,pFileIQ); + fread( fftin,sizeof(fftwf_complex),FFT_SIZE,pFileIQ); fftwf_execute( plan ); //printf("NbRead %d %d\n",Nbread,sizeof(struct GPU_FFT_COMPLEX)); diff --git a/version_history.txt b/version_history.txt index 689f90e..b646519 100644 --- a/version_history.txt +++ b/version_history.txt @@ -1,3 +1,10 @@ +201702190 +Added streaming from PiCam with sound to BATC Streamer +Added streaming from PiCam with sound to any other FMLE streamer +Optimised MPEG-2 with sound from PiCam for IQ and DATV Express outputs +Optimised H264 (no sound) from Analog for IQ and DATV Express outputs +Added option to not display viewfinder on LCD (saves CPU capacity) + 201702110 Bug fix for update of DATV Express Bug fix for Express levels in Menu