scenario = "multimedia_quality"; no_logfile = true; active_buttons = 2; button_codes = 1,2; default_background_color = 127, 127, 127; default_text_color = 255, 255, 255; default_font_size = 18; begin; ### Screen for participant name: picture { text { font_size = 24; caption = "Por favor, escreva seu nome e pressione ENTER"; }; x = 0; y = 100; text { font_size = 24; caption = " "; } response_text; left_x = -200; y = 0; } participant_name; ### ### Eye-tracker calibration screen: #picture { # background_color = 127, 127, 127; # box { # height = 10; width = 10; # color = 0, 0, 0; #check if we want the square another color # }box1; # x=0; y=0; # } et_calibration; ### ### give pic to rego to center trial { trial_duration = 2000; picture{ background_color = 127,127,127; }infra_video; } trial_recenter; ### trial { picture { text { caption = " place_holder "; font_size = 24;} instruction_text; x = 0; y = 30; }; time = 0; duration = response; } instruction_trial; ### picture { text { # font_size = 24; caption = "Por favor, de clique no botão esquerdo do mouse para ir para a tela de pontuação"; }; x = 0; y = 100; } after_video_screen; trial { trial_duration = stimuli_length; trial_type = fixed; video { filename = "av2_1280x720_s1.avi"; speed_type = video_speed_native; #speed = 30; use_audio = true; } vid; } video_trial; ### Choosing Score array { text { caption = "0"; } text0; text { caption = "1"; } text1; text { caption = "2"; } text2; text { caption = "3"; } text3; text { caption = "4"; } text4; text { caption = "5"; } text5; text { caption = "6"; } text6; text { caption = "7"; } text7; text { caption = "8"; } text8; text { caption = "9"; } text9; text { caption = "10"; } text10; text { caption = "Baixa";} textPoor; text { caption = "Alta";} textExcellent; } numbers; ### Labels array { text { caption = "Ruim"; } label0; text { caption = "Ruim"; } label1; text { caption = "Pobre"; } label2; text { caption = "Pobre"; } label3; text { caption = "Regular"; } label4; text { caption = "Regular"; } label5; text { caption = "Bom"; } label6; text { caption = "Bom"; } label7; text { caption = "Exelente"; } label8; text { caption = "Exelente"; } label9; text { caption = " ";} textPoor3; text { caption = " ";} textExcellent3; } labels; #################################### #################################### ############################################### ############################################### trial { picture { # the line box { color = 255,255,255; height = 3; width = 500; }; x = 0; y = 150;#posicao # scale marks box { color = 255,255,255; height = 10; width = 3; }; x = -250; y = 150; box { color = 255,255,255; height = 10; width = 3; }; x = -200; y = 150; box { color = 255,255,255; height = 10; width = 3; }; x = -150; y = 150; box { color = 255,255,255; height = 10; width = 3; }; x = -100; y = 150; box { color = 255,255,255; height = 10; width = 3; }; x = -50; y = 150; box { color = 255,255,255; height = 10; width = 3; }; x = 0; y = 150; box { color = 255,255,255; height = 10; width = 3; }; x = 50; y = 150; box { color = 255,255,255; height = 10; width = 3; }; x = 100; y = 150; box { color = 255,255,255; height = 10; width = 3; }; x = 150; y = 150; box { color = 255,255,255; height = 10; width = 3; }; x = 200; y = 150; box { color = 255,255,255; height = 10; width = 3; }; x = 250; y = 150; # the cursor box { color = 255,0,0; height = 20; width = 7; }; x = 0; y = 150; # the text text { caption = "\n\nPor favor, avalie a qualidade do video"; font_size = 24;} exp_text2; x = 0; y = 300; text { caption = "\n\nMovimente o mouse para controlar o cursor de pontuação.\nClic esquerdo para escolher sua pontuação"; } cap_text2; x = 0; y = -150; text text0; x = -250; y = 180; text text1; x = -200; y = 180; text label1; x = -200; y = 125; text text2; x = -150; y = 180; text text3; x = -100; y = 180; text label3; x = -100; y = 125; text text4; x = -50; y = 180; text text5; x = 0; y = 180; text label5; x = -0; y = 125; text text6; x = 50; y = 180; text text7; x = 100; y = 180; text label7; x = 100; y = 125; text text8; x = 150; y = 180; text text9; x = 200; y = 180; text label9; x = 200; y = 125; text text10; x = 250; y = 180; text { caption = "Sequência A"; } poor_text2; x = -380; y = 150; text { caption = " "; } excellent_text2; x = 250; y = -50; # the line box { color = 255,255,255; height = 3; width = 500; }; x = 0; y = -20; # scale marks box { color = 255,255,255; height = 10; width = 3; }; x = -250; y = -20; box { color = 255,255,255; height = 10; width = 3; }; x = -200; y = -20; box { color = 255,255,255; height = 10; width = 3; }; x = -150; y = -20; box { color = 255,255,255; height = 10; width = 3; }; x = -100; y = -20; box { color = 255,255,255; height = 10; width = 3; }; x = -50; y = -20; box { color = 255,255,255; height = 10; width = 3; }; x = 0; y = -20; box { color = 255,255,255; height = 10; width = 3; }; x = 50; y = -20; box { color = 255,255,255; height = 10; width = 3; }; x = 100; y = -20; box { color = 255,255,255; height = 10; width = 3; }; x = 150; y = -20; box { color = 255,255,255; height = 10; width = 3; }; x = 200; y = -20; box { color = 255,255,255; height = 10; width = 3; }; x = 250; y = -20; # the cursor box { color = 255,0,0; height = 20; width = 7; }; x = 0; y = -20; # the text text { caption = "\n\nPor favor, avalie a qualidade do video"; font_size = 24;} exp_text3; x = 0; y = 300; text { caption = "\n\nMovimente o mouse para controlar o cursor de pontuação.\nClic esquerdo para escolher sua pontuação"; } cap_text3; x = 0; y = -150; # numbers and labels text text0; x = -250; y = 10; text text1; x = -200; y = 10; text label0; x = -200; y = -45; text text2; x = -150; y = 10; text text3; x = -100; y = 10; text label3; x = -100; y = -45; text text4; x = -50; y = 10; text text5; x = 0; y = 10; text label5; x = 0; y = -45; text text6; x = 50; y = 10; text text7; x = 100; y = 10; text label7; x = 100; y = -45; text text8; x = 150; y = 10; text text9; x = 200; y = 10; text label9; x = 200; y = -45; text text10; x = 250; y = 10; text { caption = "Sequência B"; } poor_text3; x = -380; y = -20; text { caption = " "; } excellent_text3; x = 250; y = -50; ######################### } slider_pic2; } slider_trial2; ############################################### ############################################### box {height = 10 ; width = 10;}border_box; array { LOOP $i 20; text {caption = " "; background_color = 127, 127, 127 ;}; ENDLOOP; }menu_text; text{caption = "mii"; font_size = 7; background_color = 255,255,255; }cursor; text{caption = " "; font_size = 36; background_color = 127,127,127;}titletext; trial{ picture{ background_color = 127,127,127; }pic; }menu_screen; ########### ### PCL ### ########### begin_pcl; #global variables array< string > VideoNames[0][0]; array< string > VOriginalNames[0][0]; array scores[2];#array where the scores are saved int iExpCount = 0; int sessions = 1; #set depending on how many sessions string file_name; string namevo; #name of the original video string input_file_name; int iCount = 1; int max_x = display_device.width() / 2; int min_x = -max_x; int max_y = display_device.height() / 2; int min_y = -max_y; int bottom_max_y = 100; #for restricting mouse to bottom half int bottom_min_y = min_y + 40; #for restricting mouse to bottom half int start_time; string instructions; #mouse stuff mouse mse = response_manager.get_mouse( 1 ); mse.set_min_max( 1, -250, 250 ); int iCursor_x_delta; int resp_count_pre; #files input_file filevideoNames = new input_file; output_file fExpRes = new output_file; output_file newFileList = new output_file; ### Tracker Comment Out ### # int Caltype = 13; #>>>> set the strenght of calibration (5,9,13) # eye_tracker tracker = new eye_tracker( "{F62A86B9-6F75-49B7-944F-2B4DECA92F48}" ); # string cmd_et_bmp = "ET_BMP " + "c:\\packet_loss\\"; # string cmd_et_sav = "ET_SAV " + "c:\\packet_loss\\"; ## ### ################### #################################### Subroutines ######################################## ################### # 1. Utility subroutines ######################## ## ### Tracker Comment Out ### ## ## EYE TRACKER CALIBRATION # sub # calibration # begin # if (Caltype == 5) # then tracker.calibrate( et_calibrate_default, 5.0, 0.0, 0.0 ); # elseif (Caltype == 9) # then tracker.calibrate( et_calibrate_default, 9.0, 0.0, 0.0 ); # elseif (Caltype == 13) # then tracker.calibrate( et_calibrate_default, 13.0, 0.0, 0.0 ); # end; # end; ### # mouse activity sub bool resp (int button, int current_count) begin if response_manager.total_response_count(button) > current_count then return true end; return false; end; # 2. experiment-specific routines ################################# # Records name of participant: sub string get_response begin system_keyboard.set_case_mode( 3 ); # Accept capital letter input system_keyboard.set_max_length( 1 ); loop until false begin #start the loop response_text.set_caption( " " + file_name ); response_text.redraw(); participant_name.present(); string letter = system_keyboard.get_input(); if (system_keyboard.last_input_type() == keyboard_delimiter) then break # end the loop end; if (letter == "=" && file_name.count( ) != 0) then # Check if you were pressing backspace and there are still letters in the string int Str_lngth = file_name.count( ); Str_lngth = Str_lngth - 1; file_name.resize( Str_lngth ); end; if (letter != "=") then file_name = file_name + letter end; end; return file_name end; ### # shows videos sub int showVideo(string filename) begin #term.print_line(filename); vid.set_filename(filename); #term.print_line(filename); vid.prepare(); ### recentering trial_recenter.present(); fExpRes.print( (clock.time()-start_time) ); fExpRes.print("\t"); ## ### Tracker comment out ### # tracker.send_command(cmd_et_bmp + "ET_background.jpg");### sending image name to eye tracker video_trial.present(); fExpRes.print( (clock.time()-start_time) ); fExpRes.print("\t"); return 1; end; # show audio #sub # play( string message ) #begin # display_window.erase(); # display_window.draw_text( message ); # trial1.present() #end; # allows entering scores sub array score_video begin int resp_count = response_manager.response_data_count( ); loop mse.set_xy(0,0); mse.poll(); int iCursor_x_initial = mse.x(); int iCursor_x_current = mse.x(); iCursor_x_delta = iCursor_x_current - iCursor_x_initial; until resp(1,resp_count) begin mse.poll(); iCursor_x_current = mse.x(); iCursor_x_delta = iCursor_x_current - iCursor_x_initial; if (iCursor_x_delta > 250) then iCursor_x_delta = 250 elseif (iCursor_x_delta < -250) then iCursor_x_delta = -250 end; #primer slider (dinamico) slider_pic2.set_part_x( 13, iCursor_x_delta ); slider_trial2.present(); #segundo slider (estatico) end; int score1=(iCursor_x_delta+250)/5;#score1, score que vai ser escrito no arquivo de saida int aux2=iCursor_x_delta;#aux2, valor da primeira avaliao scores[1]=score1;#adiciona o primeiro score ao array resp_count = response_manager.response_data_count( ); loop mse.set_xy(0,0); mse.poll(); int iCursor_x_initial = mse.x(); int iCursor_x_current = mse.x(); iCursor_x_delta = iCursor_x_current - iCursor_x_initial; until resp(1,resp_count) begin mse.poll(); iCursor_x_current = mse.x(); iCursor_x_delta = iCursor_x_current - iCursor_x_initial; if (iCursor_x_delta > 250) then iCursor_x_delta = 250 elseif (iCursor_x_delta < -250) then iCursor_x_delta = -250 end; slider_pic2.set_part_x( 46, iCursor_x_delta ); slider_trial2.present(); end; int score2 = (iCursor_x_delta+250)/5; scores[2]=score2; #term.print_line(scores[2]); slider_trial2.present(); slider_pic2.set_part_x( 13, 0 ); slider_pic2.set_part_x( 46, 0 ); return scores; end; ### # Sets New Instruction Screen sub instruction_screen(string instr) begin instruction_text.set_caption(instr); instruction_text.redraw(); instruction_trial.present(); end; ### # Finds the original video from an array comparing it with the current video shown sub string get_original(string videoname) begin loop string namev; string aux1; string aux2=videoname.substring(1,3); #term.print_line(videoname); #term.print_line(aux2); int nV=VOriginalNames[1].count(); int i=1; bool located=false; until located || (i > nV) begin namevo=VOriginalNames[1][i]; #term.print_line(namev); aux1=namevo.substring(1,3); if (aux1==aux2) then located=true; else i=i+1; end; end; return namevo; end; #loads the video lists for the current task sub loadvideos (string filename, int nSess) begin filevideoNames.open( filename );#abre o arquivo filename VideoNames.resize(nSess); loop int iNameCount = 1; string strFileName = ""; until filevideoNames.end_of_file() # parse text file begin loop int j = 1; until j > nSess begin strFileName = filevideoNames.get_line(); if strFileName != "" then VideoNames[j].resize( iNameCount ); VideoNames[j] [iNameCount] = strFileName; end; j = j+1; end; iNameCount = iNameCount + 1; end; #imgsPerGroup = iNameCount; filevideoNames.close(); loop int j = 1; until j > nSess begin VideoNames[j].shuffle(); j = j+1; end; end; #load videos in order without suffling them #loads the video lists for the current task sub loadvideos_in_order (string filename, int nSess) begin filevideoNames.open( filename );#abre o arquivo filename VideoNames.resize(nSess); loop int iNameCount = 1; string strFileName = ""; until filevideoNames.end_of_file() # parse text file begin loop int j = 1; until j > nSess begin strFileName = filevideoNames.get_line(); if strFileName != "" then VideoNames[j].resize( iNameCount ); VideoNames[j] [iNameCount] = strFileName; end; j = j+1; end; iNameCount = iNameCount + 1; end; #imgsPerGroup = iNameCount; filevideoNames.close(); end; # Loads original videos from a text file sub load_original_videos (string filename, int nSess) begin filevideoNames.open( filename );#abre o arquivo filename VOriginalNames.resize(nSess); loop int iNameCount = 1; string strFileName = ""; until filevideoNames.end_of_file() # parse text file begin loop int j = 1; until j > nSess begin strFileName = filevideoNames.get_line(); if strFileName != "" then VOriginalNames[j].resize( iNameCount ); VOriginalNames[j] [iNameCount] = strFileName; end; j = j+1; end; iNameCount = iNameCount + 1; end; #imgsPerGroup = iNameCount; filevideoNames.close(); end; #################### ################################### MAIN ROUTINE ###################################### #################### file_name = get_response(); instructions = "Bem-vindo! Obrigado(a) pela sua participação neste experimento.\n\n" + " O experimento está dividido em 3 sessões: \n \n" + " (1) (1) sessão de apresentação, \n" + " (2) (2) sessão de treinamento, e (3) sessão principal. \n\n\n" + " No início de cada sessão, vou explicar \n" + " o que você deve fazer em cada sessão.\n" + " \n\n\n\nClique no botão esquerdo do mouse para continuar."; instruction_screen(instructions); ## eyetracking calibration instructions = "A distáncia do monitor para seus olhos \n" + "É muito importante durante a sessão.\n\n" + "Tente não se inclinar para trâs. \n" + " \n\n\n\nClique no botão esquerdo do mouse para continuar."; instruction_screen(instructions); #instructions = "(1) CALIBRATION SESSION\n\n\n" + #"Please, wait for a few seconds while I adjust the system.\n\n" + #"When the system is ready, I will ask you to continue.\n\n" + #" \n\n\n\nLeft-click to continue"; #instruction_screen(instructions); #instructions = "(1) CALIBRATION SESSION\n\n\n" + # "You're now going to see a series of small black SQUARES on the screen.\n\n"+ # "At each screen, one black square will appear at a different position.\n\n" + # "Please, keep your eyes fixed on each of these squares.\n"+ # "\n\n\n\nLeft-click to continue"; #instruction_screen(instructions); #free looking of originals ### Tracker comment out ### # tracker.start_tracking(); # string cal = "cal.bmp"; # string idf = file_name + "S1.idf"; # calibration(); # tracker.send_command( "ET_CLR" ); # tracker.set_recording( true ); start_time = clock.time(); #term.print_line(start_time); ## ### #instructions = "(1) CALIBRATION SESSION\n\n\n" + #"Thank you!\n\n The calibration is now complete.\n\n"+ #"\n\n\n\nLeft-click to continue"; #instruction_screen(instructions); #instructions = "(1) SESSÃO LIVRE\n\n\n" + # "Agora você vai assistir uma série de videos. \n\n"+ # "\nPor favor, assista eles como se estivesse em casa assistindo a TV\n\n"+ # "\n\n\n Quando você estiver pronto para começar, por favor clique esquerdo do mouse para continuar"; #instruction_screen(instructions); ## VIDEO FREE-LOOKING ##################### #suprimimos esta parte por enquanto #timing output file string file_name_txt = file_name; file_name_txt.append ( "_FL_timing.txt"); #term.print_line(file_name_txt); fExpRes.open( "output\\" + file_name_txt ); fExpRes.print( "T-Start\tT-End\tVideo\n"); #input_file_name = "originals\\originals_list_av.txt"; #loadvideos_in_order(input_file_name, 1); #loop #int j = 1; #string vfn; #int nVid = VideoNames[1].count(); #until j > nVid #begin # vfn = VideoNames[1][j]; #term.print_line(vfn); # showVideo(vfn); # fExpRes.print( vfn ); fExpRes.print("\n"); # j = j+1; #end; fExpRes.close(); ## TRAINING ################### #Part 1: show videos with impairments, no scoring instructions = "(1) SESSÃO DE APRESENTAÇÃO\n\n\n" + "Este estudo tem como objetivo medir os valores de qualidade percebidos\n"+ "por observadores humanos. Não estamos interessados no conteúdo\n"+ "dos vídeos apresentados, mas apenas na sua qualidade. \n"+ " \n\n\n\nClique no botão esquerdo do mouse para continuar."; instruction_screen(instructions); instructions = "(1) SESSÃO DE APRESENTAÇÃO\n\n\n" + "Para você ter uma idea de como avaliar a qualidade, vou apresentar\n" + "uma série de vídeos. A série inclui dois conjuntos de vídeos (imagem e áudio) diferentes.\n" + "O primeiro conjunto (imagem) está formado por cinco sequências , a sequência original e quatro degradações dela.\n"+ "Estas sequências serão apresentados em ordem de qualidade decrescente, de maior para menor.\n"+ " \n\n\n\nClique no botão esquerdo do mouse para continuar."; instruction_screen(instructions); # Playing high quality videos file_name_txt = file_name; #term.print_line(file_name_txt); file_name_txt.append ( "_training_ORG_timing.txt"); fExpRes.open( "output\\" + file_name_txt ); fExpRes.print( "T-Start\tT-End\tVideo\n"); input_file_name = "presentation\\session1_list_av.txt"; loadvideos_in_order(input_file_name, 1); loop int j = 1; string vfn; int nVid = VideoNames[1].count(); until j > nVid begin vfn = VideoNames[1][j]; #mostra videos #term.print_line(vfn); #################### #showVideo(vfn); fExpRes.print( vfn ); fExpRes.print("\n"); j = j+1; end; fExpRes.close(); instructions = "(1) SESSÃO DE APRESENTAÇÃO\n\n\n" + "Você percebeu as diferenças? \n"+ "O segundo conjunto apresenta um vídeo diferente (áudio) com degradações similares.\n"+ "A ideia é você perceber o intervalo de qualidade que você vai encontrar\n" + "neste experimento.\n\n\n"+ "\n\n\n Clique no botão esquerdo do mouse para assistir os vídeos degradados."; instruction_screen(instructions); file_name_txt = file_name; file_name_txt.append ( "_training_FL_timing.txt"); fExpRes.open( "output\\" + file_name_txt ); fExpRes.print( "T-Start\tT-End\tVideo\n"); input_file_name = "presentation\\session2_list_av.txt"; loadvideos_in_order(input_file_name, 1); term.print_line("presentation\\session2_list_av.txt Segundo vídeo"); loop int j = 1; string vfn; int nVid = VideoNames[1].count(); until j > nVid begin vfn = VideoNames[1][j]; #mostra videos term.print_line(vfn); ##################### #showVideo(vfn); fExpRes.print( vfn ); fExpRes.print("\n"); j = j+1; end; fExpRes.close(); instructions = "(1) SESSÃO DE APRESENTAÇÃO\n\n\n" + "Você percebeu a diferença? \n\n"+ "Lembre que os vídeos com qualidade máxima\n"+ "correspondem a um valor de 10.\n\n"+ "Se o vídeo tem uma qualidade equivalente é mitade da\n"+ "qualidade do vídeo original, este vídeo tem valor 5; se \n"+ "tem qualidade 1/10th em relação ao vídeo original, tem valor 1; etc.\n" + "\n\n\n Clique no botão esquerdo do mouse para continuar."; instruction_screen(instructions); #Part 2:scoring training instructions = "(2) SESSÃO DE TREINAMENTO \n\n\n" + "Antes de começar a sessão experimental, realizaremos uma sessão de treinamento \n"+ "para ter certeza que você entendeu as tarefas do experimento. As tarefas a serem realizadas\n"+ "nesta sessão serão as mesmas realizadas no experimento principal.\n"+ "As respostas nesta sessão não serão gravadas, logo não se preocupe se você cometer algum erro.\n"+ "Se você tiver alguma dúvida durante a sessão, sinta-se à vontade em fazé-la\n\n"+ "\n\n\n Clique no botão esquerdo do mouse para continuar."; instruction_screen(instructions); instructions = "(2) SESSÃO DE TREINAMENTO \n\n\n" + "A cada sessão, dois vídeos de teste com duração 8 segundos são apresentados. Cada vídeo \n"+ "é reproduzido apenas uma vez. Após a sua apresentação, duas escalas aparecerão na tela, com numeração \n"+ "entre 0 e 10, representado os possíveis níveis de qualidade de cada vídeo.\n"+ "\n\n\n Clique no botão esquerdo do mouse para continuar."; instruction_screen(instructions); instructions = "(2) SESSÃO DE TREINAMENTO \n\n\n" + "Após assistir aos vídeos, escolha um número para a qualidade do primeiro vídeo clicando na 1a. escala com \n"+ "o botão ESQUERDO do mouse. Em seguida, escolha um número para a qualidade do segundo vídeo clicando na 2a. escala \n" + "o botão ESQUERDO do mouse.\n"+ "Não pense muito na sua resposta. Queremos a sua impressão inicial\n"+ "acerca da qualidade do vídeo (imagem + áudio).\n"+ "\n\n\n Clique no botão esquerdo do mouse para continuar."; instruction_screen(instructions); #instructions = "(3) PROVAS PRÁTICAS \n\n\n" + # "You will be asked to estimate the strength of defects or\n"+ # "impairments in the video. The defects can be found in any \n"+ # "region of video and at any time during the clip.\n"+ # "\n\n\n Left-click to continue."; #instruction_screen(instructions); #instructions = "(3) PROVAS PRÁTICAS \n\n\n" + # "After you viewed the video, You will be asked to indicate the strength of \n"+ # "the defect you saw using a scale with values ranging from 0 and 10.\n\n"+ # "You are to assign a strength value of 10 to strongest defect.\n"+ # "If the strength of a defect in the experiment is half of the \n"+ # "worst sample clip, give it a 5; if it is 1/10th as bad, give it a 1.\n"+ # "If you did not perceive any defects, call it zero.\n\n"+ # "You should enter the scores using the mouse to LEFT-click on the desired value.\n\n"+ # "\n\n\n Left-click to continue."; #instruction_screen(instructions); instructions = "(2) SESSÃO DE TREINAMENTO \n\n\n" + "Depois de selecionar sua escolha de qualidade,\n"+ "Clique no botão esquerdo do mouse para tocar o próximo vídeo.\n\n"+ "Dúvidas?\n\n"+ "\n\n\n clique no botão esquerdo do mouse para começar a SESSÃO DE TREINAMENTO."; instruction_screen(instructions); # not used anymore #int main_menu_choice = menu(main_menu_options, "Did you perceive any impairments or defects in the video?"); #score_video(); #Loading referencial videos first input_file_name = "training\\originals_practicetest_list_av.txt"; load_original_videos(input_file_name, 1); ########################################################### file_name_txt = file_name; file_name_txt.append ( "_training_scores.txt"); fExpRes.open( "output\\" + file_name_txt ); fExpRes.print( "T-Start\tT-End\tVideo\tQuality Score A\tQuality Score B\n"); input_file_name = "training\\training_list_av.txt"; loadvideos(input_file_name, 1); term.print_line("training\\originals_practicetest_list_av.txt e training\\training_list_av.txt Sessao dois"); loop int j = 1; string vfn; int nVid = VideoNames[1].count(); array t_score[2]; int turn; until j > nVid begin #current video vfn = VideoNames[1][j]; #gets the original video from the vfn video namevo=get_original(vfn); term.print_line("El video original" + namevo); term.print_line("El video degradado" + vfn); turn=random(1,2);#escolhe quem vai ser primeiro if (turn==1) then #showVideo(namevo);#original primeiro fExpRes.print( namevo ); fExpRes.print("\n"); #showVideo(vfn); t_score = score_video(); fExpRes.print( vfn ); fExpRes.print("\t"); fExpRes.print(t_score[1]); fExpRes.print("\t"); fExpRes.print(t_score[2]); fExpRes.print("\n"); elseif (turn==2) then #showVideo(vfn);#degradado primeiro fExpRes.print( vfn ); fExpRes.print("\n"); #showVideo(namevo); t_score = score_video(); fExpRes.print( namevo ); fExpRes.print("\t"); fExpRes.print(t_score[1]); fExpRes.print("\t"); fExpRes.print(t_score[2]); fExpRes.print("\n"); end; #show video degradado #showVideo(vfn); #fExpRes.print("\n"); #show the original video #showVideo(namevo); #get score for video #t_score = score_video(); #term.print_line(t_score[1]); #term.print_line(t_score[2]); #fExpRes.print( vfn ); #fExpRes.print("\t"); #fExpRes.print(t_score[1]); #fExpRes.print("\n"); j = j+1; end; fExpRes.close(); ##################### ## MAIN EXPERIMENT ## ##################### instructions = "(3) SESSÃO PRINCIPAL \n\n\n" + "Agora, iniciaremos a sessão principal. Se, em algum\n"+ "momento do experimento, você precisar de uma pausa ou, ainda,\n"+ "se estiver confuso sobre a tarefa a ser realizada, por favor me informe.\n\n"+ "Como não podemos parar a reprodução dos vídeos ou retornar para corrigir dados\n"+ "anteriores, peço que espere a completa reprodução do vídeo e me avise \n"+ "na fase de avaliação da qualidade, esperando para apertar o botão de continuar. \n"+ "O experimento tem uma duração de xx minutos, caso você não realize pausas.\n"+ "\n\n\n Clique no botão esquerdo do mouse para continuar."; instruction_screen(instructions); instructions = "(3) SESSÃO PRINCIPAL -- PARTE I \n\n\n" + "Mais alguma dúvida?\n\n"+ "\n\n\n Clique no botão esquerdo do mouse para continuar (PARTE I)."; instruction_screen(instructions); #instructions = "Now the experiment starts\n\nHalfway your task you will be allowed to take a small break and rest your eyes\n\n\n\nLeft-click to continue"; #instruction_screen(instructions); #Loading referencial videos first input_file_name = "maintest\\originals_maintest_list_av.txt"; load_original_videos(input_file_name, 1); ########################################################### file_name_txt = file_name; file_name_txt.append ( "_S1.txt"); fExpRes.open( "output\\" + file_name_txt ); fExpRes.print( "T-Start\tT-End\tVideo\t\Quality Score A\t\Quality Score B\n"); input_file_name = "maintest\\video_list_av.txt"; loadvideos(input_file_name, 2); term.print_line("maintest\\originals_maintest_list_av.txt e maintest\\video_list_av.txt Main test 1"); loop int j = 1; string vfn; int nVid = VideoNames[1].count(); array t_score[2]; int turn; #int t_score; until j > nVid begin #current video vfn = VideoNames[1][j]; #gets the original video from the vfn video namevo=get_original(vfn); term.print_line("El video original" + namevo); term.print_line("El video degradado" + vfn); turn=random(1,2);#escolhe quem vai ser primeiro if (turn==1) then #showVideo(namevo);#original primeiro fExpRes.print( namevo ); fExpRes.print("\n"); #showVideo(vfn); t_score = score_video(); fExpRes.print( vfn ); fExpRes.print("\t"); fExpRes.print(t_score[1]); fExpRes.print("\t"); fExpRes.print(t_score[2]); fExpRes.print("\n"); elseif (turn==2) then #showVideo(vfn);#degradado primeiro fExpRes.print( vfn ); fExpRes.print("\n"); #showVideo(namevo); t_score = score_video(); fExpRes.print( namevo ); fExpRes.print("\t"); fExpRes.print(t_score[1]); fExpRes.print("\t"); fExpRes.print(t_score[2]); fExpRes.print("\n"); end; #term.print_line(vfn); #show video twice #showVideo(vfn); #fExpRes.print( vfn ); fExpRes.print("\n"); #showVideo(namevo); #get score for video #t_score = score_video(); #fExpRes.print( vfn ); #fExpRes.print("\t"); #fExpRes.print(t_score); #fExpRes.print("\n"); j = j+1; end; fExpRes.close(); ###Tracker comment out#### # tracker.set_recording( false ); # tracker.send_command( cmd_et_sav + "roi_exp_01\\" + idf ); # tracker.stop_tracking(); ### instructions = "\n\n\nEste é o final da primeira parte do teste.\n"+ "\n\n\nPor favor, clique no botão esquerdo do mouse para continuar com o teste (Parte II). \n"; instruction_screen(instructions); file_name_txt = file_name; file_name_txt.append ( "_S2.txt"); fExpRes.open( "output\\" + file_name_txt ); fExpRes.print( "T-Start\tT-End\tVideo\tQuality Score A\tQuality Score B\n"); ################ # Part 2 ################# #instructions = "(1) CALIBRATION SESSION -- PART II\n\n\n" + # "You are now going to perform the calibration session again.\n"+ # "Please, wait for a few seconds while the experimenter adjusts the system.\n\n" + # "When the system is ready, the experimenter will ask you to continue.\n\n" + # " \n\n\n\nLeft-click to continue"; #instruction_screen(instructions); #instructions = "(1) CALIBRATION SESSION -- PART II \n\n\n" + # "You're now going to see a series of small black SQUARES on the screen.\n\n"+ # "At each screen, one black square will appear at a different position.\n\n" + # "Please, keep your eyes fixated on each of these squares.\n"+ # "\n\n\n\nLeft-click to continue"; #instruction_screen(instructions); #instructions = "(1) CALIBRATION FOR PART II \n\n\n" + # "You are now going to perform the calibration session again. #\n\n Please keep your eyes fixed on the small black square\n\n\n\nLeft-click to continue"; #instruction_screen(instructions); ## ##Tracker comment out#### # tracker.start_tracking(); # cal = "cal.bmp"; # idf = file_name + "S2.idf"; # calibration(); # tracker.send_command( "ET_CLR" ); # tracker.set_recording( true ); start_time = clock.time(); ### #instructions = "Obrigado!\n\n The calibration is now complete.\n\n"+ # "Left-click to start the Part II of the experiment."+ # "\n\n\n\n Left-click to continue"; #instruction_screen(instructions); loop int j = 1; string vfn; int nVid = VideoNames[2].count(); array t_score[2]; int turn; #term.print_line(nVid); #int t_score; until j > nVid begin #current video vfn = VideoNames[2][j]; #gets the original video from the vfn video namevo=get_original(vfn); term.print_line("El video original" + namevo); term.print_line("El video degradado" + vfn); turn=random(1,2);#escolhe quem vai ser primeiro if (turn==1) then #showVideo(namevo);#original primeiro fExpRes.print( namevo ); fExpRes.print("\n"); #showVideo(vfn); t_score = score_video(); fExpRes.print( vfn ); fExpRes.print("\t"); fExpRes.print(t_score[1]); fExpRes.print("\t"); fExpRes.print(t_score[2]); fExpRes.print("\n"); elseif (turn==2) then #showVideo(vfn);#degradado primeiro fExpRes.print( vfn ); fExpRes.print("\n"); #showVideo(namevo); t_score = score_video(); fExpRes.print( namevo ); fExpRes.print("\t"); fExpRes.print(t_score[1]); fExpRes.print("\t"); fExpRes.print(t_score[2]); fExpRes.print("\n"); end; #show video twice #showVideo(vfn); #term.print_line(vfn); #fExpRes.print( vfn ); fExpRes.print("\n"); #showVideo(namevo); #get score for video #t_score = score_video(); #fExpRes.print( vfn ); #fExpRes.print("\t"); #fExpRes.print(t_score); #fExpRes.print("\n"); j = j+1; end; newFileList.open("maintest\\video_list_av.txt"); loop int i = 1; int ll = VideoNames[1].count(); string vfn; until i >ll begin vfn = VideoNames[1][i]; #term.print_line(vfn); newFileList.print(vfn); newFileList.print("\n"); i = i+1; end; loop int i = 1; int ll = VideoNames[2].count(); string vfn; until i > ll begin vfn = VideoNames[2][i]; newFileList.print(vfn); newFileList.print("\n"); i = i+1; end; fExpRes.close(); newFileList.close(); instructions = "Este é o final do teste.\n\n\n\n\n Obrigado(a) pela participação!"; instruction_screen(instructions); ###Tracker comment out#### # tracker.set_recording( false ); # tracker.send_command( cmd_et_sav + "roi_exp_01\\" + idf ); # tracker.stop_tracking(); ###