Index: palm/trunk/SCRIPTS/mrun
===================================================================
--- palm/trunk/SCRIPTS/mrun	(revision 261)
+++ palm/trunk/SCRIPTS/mrun	(revision 262)
@@ -3262,11 +3262,30 @@
           printf "\n  *** dvr server with id=$dvrserver_id has been stopped"
 
-             # add the current dvr configuration file to the dvr output
-             # directory
-          cp  .dvrserver.config  DATA_DVR
-
-             # process the dvr output (option -s for generating sequence mode
-             # data)
-          process_dvr_output  -d DATA_DVR  -f $fname  -s
+             # If there is a directory, data have been output by the
+             # streaming server. Otherwise, user has chosen dvrp_output=local
+          if [[ -d DATA_DVR ]]
+          then
+
+                # Add the current dvr configuration file to the dvr output
+                # directory
+             cp  .dvrserver.config  DATA_DVR
+
+                # Process the dvr output (option -s for also generating
+                # sequence mode data)
+             process_dvr_output  -d DATA_DVR  -f $fname  -s
+
+          else
+
+                # Process the local output
+             process_dvr_output  -l  -d DATA_DVR  -f $fname
+
+          fi
+
+       elif [[ $(echo $package_list | grep -c dvrp_graphics) != 0 ]]
+       then
+
+             # Process dvr output generated in local mode (dvrp_output=local)
+          process_dvr_output  -l  -d DATA_DVR  -f $fname
+
        fi
     fi
Index: palm/trunk/SCRIPTS/process_dvr_output
===================================================================
--- palm/trunk/SCRIPTS/process_dvr_output	(revision 261)
+++ palm/trunk/SCRIPTS/process_dvr_output	(revision 262)
@@ -12,10 +12,12 @@
 
 
-    # variable declarations + default values
+    # Variable declarations + default values
  camera=false
  create_sequence_output=false
  data_catalog=`pwd`
+ dvrp_output=rtsp
  file_identifier=all_streams
  groundplate=false
+ palm_run_identifier=""
  topography=false
 
@@ -23,13 +25,14 @@
 
 
-    # read shellscript options
- while  getopts  :d:f:s option
+    # Read shellscript options
+ while  getopts  :d:f:ls option
  do
    case  $option  in
        (d)   data_catalog=$OPTARG;;
        (f)   file_identifier=$OPTARG;;
+       (l)   dvrp_output=local;;
        (s)   create_sequence_output=true;;
        (\?)  printf "\n  +++ unknown option $OPTARG \n"
-             printf "\n      allowed option are -d and -f \n"
+             printf "\n      allowed option are -d, -f, -l, -s \n"
              exit;;
    esac
@@ -37,164 +40,287 @@
 
 
-    # change to the given directory
- cd $data_catalog
-
-
-    # find out the number of streams
- (( i = 0 ))
- while true
- do
-    (( i = i + 1 ))
-    if (( i < 10 ))
-    then
-       cstream=0$i
+    # Find out the PALM run identifier
+ if [[ -f CPU_MEASURES ]]
+ then
+    palm_run_identifier=`head -1  CPU_MEASURES`
+ fi
+
+    # Process the streaming server output
+ if [[ $dvrp_output = rtsp ]]
+ then
+
+       # Change to the given directory
+    cd $data_catalog
+
+
+       # Find out the number of streams
+    (( i = 0 ))
+    while true
+    do
+       (( i = i + 1 ))
+       if (( i < 10 ))
+       then
+          cstream=0$i
+       else
+          cstream=$i
+       fi
+
+       if [[ $(ls -1 *.* | grep -c $cstream) = 0 ]]
+       then
+          (( i = i - 1 ))
+          break
+       fi
+
+          # find out the stream name
+       streamname[$i]=`ls -1 ${cstream}_*-ge.dvrs | cut -f1 -d"-"`
+
+          # get addres
+       adr[$i]=`grep ADR= ${streamname[$i]}.dvrs | grep '*' | cut -f2 -d"="`
+
+          # get maxbytes
+       maxbytes[$i]=`head -1 ${streamname[$i]}.max`
+
+          # get number of frames
+       frames[$i]=`tail -1 ${streamname[$i]}.max`
+
+    done
+
+    nstream=$i
+    nscenes=$nstream
+
+
+       # Check, if there are files containing the camera data, the ground plate
+       # and topography data.
+       # Check the first stream only, because all streams have the same files.
+    if [[ -f ${streamname[1]}_camera.max ]]
+    then
+       camera=true
+       adr_camera=`grep ADR= ${streamname[1]}.dvrs | grep 'camera' | cut -f2 -d"="`
+       maxbytes_camera=`head -1 ${streamname[1]}_camera.max`
+       (( nscenes = nscenes + 1 ))
+    fi
+    if [[ -f ${streamname[1]}_groundplate.max ]]
+    then
+       groundplate=true
+       adr_groundplate=`echo $adr_camera | sed "s/camera/groundplate/g"`
+       maxbytes_groundplate=`head -1 ${streamname[1]}_groundplate.max`
+       (( nscenes = nscenes + 1 ))
+    fi
+    if [[ -f ${streamname[1]}_topography.max ]]
+    then
+       topography=true
+       adr_topography=`echo $adr_camera | sed "s/camera/topography/g"`
+       maxbytes_topography=`head -1 ${streamname[1]}_topography.max`
+       (( nscenes = nscenes + 1 ))
+    fi
+
+
+
+       # Start with writing the dvrs file for the combined streams
+    dvr_file=${file_identifier}_streaming.dvrs
+
+    echo  "SCENES=$nscenes"  >  $dvr_file
+
+       # First, add the static scenes
+    if [[ $camera = true ]]
+    then
+       echo  "MED=TCP"                    >>  $dvr_file
+       echo  "ADR=$adr_camera"            >>  $dvr_file
+       echo  "MAXBYTES=$maxbytes_camera"  >>  $dvr_file
+       echo  "FRAMES=1"                   >>  $dvr_file
+       echo  "FRAMES_P_SEC=0"             >>  $dvr_file
+       echo  "SCENEEND"                   >>  $dvr_file
+    fi
+
+    if [[ $groundplate = true ]]
+    then
+       echo  "MED=TCP"                         >>  $dvr_file
+       echo  "ADR=$adr_groundplate"            >>  $dvr_file
+       echo  "MAXBYTES=$maxbytes_groundplate"  >>  $dvr_file
+       echo  "FRAMES=1"                        >>  $dvr_file
+       echo  "FRAMES_P_SEC=0"                  >>  $dvr_file
+       echo  "SCENEEND"                        >>  $dvr_file
+    fi
+
+    if [[ $topography = true ]]
+    then
+       echo  "MED=TCP"                        >>  $dvr_file
+       echo  "ADR=$adr_topography"            >>  $dvr_file
+       echo  "MAXBYTES=$maxbytes_topography"  >>  $dvr_file
+       echo  "FRAMES=1"                       >>  $dvr_file
+       echo  "FRAMES_P_SEC=0"                 >>  $dvr_file
+       echo  "SCENEEND"                       >>  $dvr_file
+    fi
+
+
+       # Now add the streams
+    (( i = 0 ))
+    while (( i < nstream ))
+    do
+
+       (( i = i + 1 ))
+
+       echo  "MED=TCP"                   >>  $dvr_file
+       echo  "ADR=${adr[$i]}"            >>  $dvr_file
+       echo  "MAXBYTES=${maxbytes[$i]}"  >>  $dvr_file
+       echo  "FRAMES=${frames[$i]}"      >>  $dvr_file
+       echo  "FRAMES_P_SEC=25"           >>  $dvr_file
+       echo  "SCENEEND"                  >>  $dvr_file
+
+    done
+
+
+       # Change path to the current file identifier
+    sed  "s/DATA_DVR/${file_identifier}_dvr/g"  $dvr_file > tmp_file
+    mv  tmp_file  $dvr_file
+
+
+       # If there is a dvr configuration file, set the BASEDIR to the parent
+       # directory of the above given path
+    if [[ -f .dvrserver.config ]]
+    then
+       old_path=`grep  BASEDIR  .dvrserver.config`
+       sed  "s&${old_path}&BASEDIR=..&g"  .dvrserver.config  >  .dvrserver.config.new
+       mv  .dvrserver.config.new  .dvrserver.config
+    fi
+
+
+       # Create the html file for the combined streames
+    cp  01_*-ge.html  tmp.html
+    replace=$(echo `grep src= tmp.html`)
+    sed "s&${replace}&src=\"${file_identifier}_streaming.dvrs\"&g" tmp.html > tmp1.html
+    if [[ "$palm_run_identifier" = "" ]]
+    then
+       cp  tmp1.html  ${file_identifier}_streaming.html
     else
-       cstream=$i
-    fi
-
-    if [[ $(ls -1 *.* | grep -c $cstream) = 0 ]]
-    then
-       (( i = i - 1 ))
-       break
-    fi
-
-       # find out the stream name
-    streamname[$i]=`ls -1 ${cstream}_*-ge.dvrs | cut -f1 -d"-"`
-
-       # get addres
-    adr[$i]=`grep ADR= ${streamname[$i]}.dvrs | grep '*' | cut -f2 -d"="`
-
-       # get maxbytes
-    maxbytes[$i]=`head -1 ${streamname[$i]}.max`
-
-       # get number of frames
-    frames[$i]=`tail -1 ${streamname[$i]}.max`
-
- done
-
- nstream=$i
- nscenes=$nstream
-
-
-    # Check, if there are files containing the camera data, the ground plate
-    # and topography data.
-    # Check the first stream only, because all streams have the same files.
- if [[ -f ${streamname[1]}_camera.max ]]
- then
-    camera=true
-    adr_camera=`grep ADR= ${streamname[1]}.dvrs | grep 'camera' | cut -f2 -d"="`
-    maxbytes_camera=`head -1 ${streamname[1]}_camera.max`
-    (( nscenes = nscenes + 1 ))
+       sed "s&DATA_DVR/${streamname[1]}/\*\*\*\*\*.dvr (DVR 3D Streaming)&DVR 3D streaming generated by $palm_run_identifier&g"  tmp1.html  >  ${file_identifier}_streaming.html
+    fi
+    rm  tmp.html  tmp1.html
+
+
+       # Informative messages
+    printf "\n\n  *** processing dvr stream output:"
+    printf "\n      number of detected streams = $nstream"
+    printf "\n      stream names:"
+
+    (( i = 0 ))
+    while (( i < nstream ))
+    do
+
+       (( i = i + 1 ))
+       printf " ${streamname[$i]}"
+
+    done
+    printf "\n"
+
+
+ else
+
+       # This is the branch for local output (dvrp_output=local).
+       # Find out the number of streams.
+    (( i = 0 ))
+    while true
+    do
+
+       (( i = i + 1 ))
+       if (( i < 10 ))
+       then
+          cstream=0$i
+       else
+          cstream=$i
+       fi
+
+       if [[ $(ls -1 *.* | grep -c ${cstream}_) = 0 ]]
+       then
+          (( i = i - 1 ))
+          break
+       fi
+
+          # find out the stream name
+       streamname[$i]=`ls -1 ${cstream}_*.camera.dvr | cut -f1 -d"."`
+
+    done
+
+       # Exit, if there are no streams.
+    [[ $i = 0 ]]  &&  exit
+
+    nstream=$i
+
+    mkdir -p  ${data_catalog}/sequence_data
+
+
+       # First, merge static scenes into one file
+    if [[ -f ${streamname[1]}.camera.dvr ]]
+    then
+       cat  ${streamname[1]}.camera.dvr  >>  ${data_catalog}/sequence_data/static_scenes.dvr
+    fi
+
+    if [[ -f ${streamname[1]}.groundplate.dvr ]]
+    then
+       cat  ${streamname[1]}.groundplate.dvr  >>  ${data_catalog}/sequence_data/static_scenes.dvr
+    fi
+
+    if [[ -f ${streamname[1]}.topography.dvr ]]
+    then
+       cat  ${streamname[1]}.topography.dvr  >>  ${data_catalog}/sequence_data/static_scenes.dvr
+    fi
+
+
+       # Find out the number of frames
+    frames[1]=`grep sequence ${streamname[1]}_00000.html | cut -f2 -d";" | cut -f1 -d'"' | cut -f2 -d"-"`
+
+
+       # Now, merge the data, frame by frame
+    (( j = 0 ))
+    while (( j < ${frames[1]} ))
+    do
+
+       nframe=`printf "%05d" $j`
+
+       (( i = 0 ))
+       while (( i < nstream ))
+       do
+          (( i = i + 1 ))
+          cat  ${streamname[$i]}_$nframe.dvr  >>  ${data_catalog}/sequence_data/$nframe.dvr
+       done
+
+       (( j = j + 1 ))
+
+    done
+
+
+       # Create the html file to be used for the sequence mode
+    cp  ${streamname[1]}_00000.html  tmp1.html
+    sed  "s&${streamname[1]}_camera.dvr&sequence_data/static_scenes.dvr&g"  tmp1.html  >  tmp2.html
+    sed  "s&${streamname[1]}_&sequence_data/&g"  tmp2.html  >  tmp3.html
+    if [[ "$palm_run_identifier" = "" ]]
+    then
+       cp  tmp3.html  ${file_identifier}_sequence.html
+    else
+       sed "s&sequence_data/%05d.dvr (DVR 3D Sequence)&DVR 3D sequence generated by $palm_run_identifier&g"  tmp3.html  >  ${file_identifier}_sequence.html
+    fi
+    rm  tmp1.html  tmp2.html  tmp3.html
+    mv  ${file_identifier}_sequence.html  ${data_catalog}
+
+
+       # Informative messages
+    printf "\n\n  *** processing dvr local output (using dvrp_output=local):"
+    printf "\n      number of detected streams = $nstream"
+    printf "\n      stream names:"
+
+    (( i = 0 ))
+    while (( i < nstream ))
+    do
+
+       (( i = i + 1 ))
+       printf " ${streamname[$i]}"
+
+    done
+    printf "\n"
+
  fi
- if [[ -f ${streamname[1]}_groundplate.max ]]
- then
-    groundplate=true
-    adr_groundplate=`echo $adr_camera | sed "s/camera/groundplate/g"`
-    maxbytes_groundplate=`head -1 ${streamname[1]}_groundplate.max`
-    (( nscenes = nscenes + 1 ))
- fi
- if [[ -f ${streamname[1]}_topography.max ]]
- then
-    topography=true
-    adr_topography=`echo $adr_camera | sed "s/camera/topography/g"`
-    maxbytes_topography=`head -1 ${streamname[1]}_topography.max`
-    (( nscenes = nscenes + 1 ))
- fi
-
-
-
-    # start with writing the dvrs file for the combined streams
- dvr_file=${file_identifier}_streaming.dvrs
-
- echo  "SCENES=$nscenes"  >  $dvr_file
-
-    # first, add the static scenes
- if [[ $camera = true ]]
- then
-    echo  "MED=TCP"                    >>  $dvr_file
-    echo  "ADR=$adr_camera"            >>  $dvr_file
-    echo  "MAXBYTES=$maxbytes_camera"  >>  $dvr_file
-    echo  "FRAMES=1"                   >>  $dvr_file
-    echo  "FRAMES_P_SEC=0"             >>  $dvr_file
-    echo  "SCENEEND"                   >>  $dvr_file
- fi
-
- if [[ $groundplate = true ]]
- then
-    echo  "MED=TCP"                         >>  $dvr_file
-    echo  "ADR=$adr_groundplate"            >>  $dvr_file
-    echo  "MAXBYTES=$maxbytes_groundplate"  >>  $dvr_file
-    echo  "FRAMES=1"                        >>  $dvr_file
-    echo  "FRAMES_P_SEC=0"                  >>  $dvr_file
-    echo  "SCENEEND"                        >>  $dvr_file
- fi
-
- if [[ $topography = true ]]
- then
-    echo  "MED=TCP"                        >>  $dvr_file
-    echo  "ADR=$adr_topography"            >>  $dvr_file
-    echo  "MAXBYTES=$maxbytes_topography"  >>  $dvr_file
-    echo  "FRAMES=1"                       >>  $dvr_file
-    echo  "FRAMES_P_SEC=0"                 >>  $dvr_file
-    echo  "SCENEEND"                       >>  $dvr_file
- fi
-
-
-     # now add the streams
- (( i = 0 ))
- while (( i < nstream ))
- do
-
-    (( i = i + 1 ))
-
-    echo  "MED=TCP"                   >>  $dvr_file
-    echo  "ADR=${adr[$i]}"            >>  $dvr_file
-    echo  "MAXBYTES=${maxbytes[$i]}"  >>  $dvr_file
-    echo  "FRAMES=${frames[$i]}"      >>  $dvr_file
-    echo  "FRAMES_P_SEC=25"           >>  $dvr_file
-    echo  "SCENEEND"                  >>  $dvr_file
-
- done
-
-
-    # change path to the current file identifier
- sed  "s/DATA_DVR/${file_identifier}_dvr/g"  $dvr_file > tmp_file
- mv  tmp_file  $dvr_file
-
-
-    # if there is a dvr configuration file, set the BASEDIR to the parent
-    # directory of the above given path
- if [[ -f .dvrserver.config ]]
- then
-    old_path=`grep  BASEDIR  .dvrserver.config`
-    sed  "s&${old_path}&BASEDIR=..&g"  .dvrserver.config  >  .dvrserver.config.new
-    mv  .dvrserver.config.new  .dvrserver.config
- fi
-
-
-    # create the html file for the combined streames
- cp  01_*-ge.html  tmp.html
- replace=$(echo `grep src= tmp.html`)
- sed "s&${replace}&src=\"${file_identifier}_streaming.dvrs\"&g" tmp.html > ${file_identifier}_streaming.html
- rm tmp.html
-
-
-    # informative messages
- printf "\n\n  *** processing local dvr stream output:"
- printf "\n      number of detected streams = $nstream"
- printf "\n      stream names:"
-
- (( i = 0 ))
- while (( i < nstream ))
- do
-
-    (( i = i + 1 ))
-    printf " ${streamname[$i]}"
-
- done
- printf "\n"
-
-
-    # create output for viewing dvr data in sequence mode
+
+
+    # Create output for viewing dvr data in sequence mode
  if [[ $create_sequence_output = true ]]
  then
@@ -202,5 +328,5 @@
     mkdir  sequence_data
 
-       # first, merge static scenes into one file
+       # First, merge static scenes into one file
     if [[ $camera = true ]]
     then
@@ -219,5 +345,5 @@
 
 
-       # now, merge the data, frame by frame
+       # Now, merge the data, frame by frame
     (( j = 0 ))
     while (( j < ${frames[1]} ))
@@ -238,9 +364,15 @@
 
 
-       # create the html file to be used for the sequence mode
+       # Create the html file to be used for the sequence mode
     cp  ${streamname[1]}.html  tmp1.html
     sed  "s/camera.dvr/static_scenes.dvr/g"  tmp1.html  >  tmp2.html
-    sed  "s&${streamname[1]}&sequence_data&g"  tmp2.html  >  ${file_identifier}_sequence.html
-    rm  tmp1.html  tmp2.html
+    sed  "s&${streamname[1]}&sequence_data&g"  tmp2.html  >  tmp3.html
+    if [[ "$palm_run_identifier" = "" ]]
+    then
+       cp  tmp3.html  ${file_identifier}_sequence.html
+    else
+       sed "s&DATA_DVR/sequence_data/\*\*\*\*\*.dvr (DVR 3D Sequence)&DVR 3D sequence generated by $palm_run_identifier&g"  tmp3.html  >  ${file_identifier}_sequence.html
+    fi
+    rm  tmp1.html  tmp2.html  tmp3.html
 
     printf "      data for using sequence mode generated"
@@ -250,4 +382,4 @@
 
 
-    # change back to directory from where script has been called
- cd - > /dev/null
+    # Change back to directory from where script has been called
+ cd - > /dev/null  2>&1
