function [ labels, valid_ids, vid_ids, filenames  ] = extract_BP4D_labels_intensity( BP4D_dir, recs, aus )
%EXTRACT_SEMAINE_LABELS Summary of this function goes here
%   Detailed explanation goes here
    
    files_all = dir(sprintf('%s/AU%02d/%s', BP4D_dir, aus(1), '/*.csv'));
    num_files = numel(files_all);
            
    labels = cell(num_files, 1);
    valid_ids = cell(num_files, 1);
    vid_ids = zeros(num_files, 2);
    filenames = cell(num_files, 1);
    
    file_id = 1;
    
    for r=1:numel(recs)
        
        files_root = sprintf('%s/AU%02d/', BP4D_dir, aus(1));
        files_all = dir([files_root, recs{r}, '*.csv']);

        for f=1:numel(files_all)
            for au=aus
                
                % Need to find relevant files for the relevant user and for the
                % relevant AU
                files_root = sprintf('%s/AU%02d/', BP4D_dir, au);
                files_all = dir([files_root, recs{r}, '*.csv']);
        
                file = [files_root, '/', files_all(f).name];

                [~, filename,~] = fileparts(file);
                filenames{file_id} = filename(1:7);

                intensities = csvread(file); % import annotations for one session

                frame_nums = intensities(:,1); % get all frame numbers

                codes = intensities(:,2);

                % Finding the invalid regions
                valid = codes ~= 9;

                vid_ids(file_id,:) = [frame_nums(1), frame_nums(end)];

                if(au == aus(1))
                    valid_ids{file_id} = valid;
                    labels{file_id} = codes;
                else
                    valid_ids{file_id} = valid_ids{file_id} & valid;
                    labels{file_id} = cat(2, labels{file_id}, codes);
                end

            end 
            file_id = file_id + 1;
        end
    end
    
    labels = labels(1:file_id-1);
    valid_ids = valid_ids(1:file_id-1);
    vid_ids = vid_ids(1:file_id-1, :);
    filenames = filenames(1:file_id-1);
    
end